Menggunakan Tawaran di Loop Sementara?
Halaman 1 dari 462 12 TerakhirTerakhir
Results 1 to 10 of 12

Thread: Menggunakan Tawaran di Loop Sementara?

  1. #1
    Saya sudah mencoba untuk menulis EA, dan untuk membantu mendapatkan lebih tepat tentang mendapatkan ke puncak harga sebelum menempatkan pesanan jual (dalam uptrend yang kuat), saya sudah mencoba menggunakan loop sementara - hanya ketika saya melakukannya, sepertinya tester masuk ke loop tak terbatas - itu hanya tidak melakukan skrip meskipun tidak ada kesalahan saat kompilasi.

    Di bawah ini adalah loop, jika ada yang bisa menunjukkan mengapa itu tidak berfungsi atau memberikan saran untuk mengubah atau memodifikasinya, saya akan sangat menghargainya.

    BuyPriceMax = Bid- (TrailingBuy * Point);
    while (Bidgt; = BuyPriceMax) {
    if (Bidgt; BuyPriceMax (TrailingBuy * Point)) {
    BuyPriceMax = Bid- (TrailingBuy * Point);
    Tidur (10000);/TIDUR 10 DETIK
    RefreshRates ();
    }
    }
    Kode mengikuti pernyataan if untuk memastikan tren meningkat. Ini harus dilakukan sebagai berikut: Tetapkan harga tambahan (BuyPriceMax) yang dapat dibandingkan dengan Bid. Sementara harga Bid adalah gt; = BuyPriceMax, terus periksa Harga Bid untuk setiap kenaikan. Jika harga naik, naikkan BuyPriceMax ke harga Penawaran minus TrailingBuy - variabel yang saya gunakan untuk memungkinkan harga sedikit turun karena naik lebih tinggi tanpa melakukan pemesanan (sama dengan apa yang Anda mungkin setel untuk berhenti trailing) Setelah harga turun di bawah BuyPriceMax, the loop harus berhenti dieksekusi dan pesanan akan ditempatkan pada harga Penawaran. Jika ada yang bisa membantu saya mencari tahu mengapa Bid selalu tampak seperti gt; = BuyPriceMax, saya akan menghargainya. Tampaknya dengan perintah refresh, sekali Bid turun cukup jauh, itu harus mengakhiri loop sehingga pesanan saya dapat ditempatkan.

    Terima kasih!

  2. #2
    Butuh beberapa saat, tetapi saya tidak pernah ingin meninggalkan pertanyaan yang belum terjawab, jadi saya menemukan jawabannya untuk Anda. Ini dia: Katakanlah ini: Bid = 1.2700 TrailingBuy = 30 Jadi, maka ini-- BuyPriceMax = Bid- (TrailingBuy * Point); while (Bidgt; = BuyPriceMax) {if (Bidgt; BuyPriceMax (TrailingBuy * Point)) {BuyPriceMax = Bid- (TrailingBuy * Point); Tidur (10000);/TIDUR 10 DETIK RefreshRates (); }} Menjadi ini-- BuyPriceMax = 1.2700- (30 * Poin);/BuyPriceMax menjadi 1.2670 sementara (1.2700gt; = 1.2670) {//Ini benar sehingga ia pergi ke loop if if (1.2700gt; 1.2670 (30 * Point)) {//1.2700 TIDAK lebih besar dari 1.2700 BuyPriceMax = Bid- (TrailingBuy * Point);/Karena itu melompati baris ini Sleep (10000);/TIDUR 10 DETIK/dan baris ini RefreshRates ();/dan baris ini}/akhir dari loop/di sini ia mengulangi loop while tanpa menyegarkan kurs, jadi penawaran Anda selamanya 1.2700, menjadikannya loop tak terbatas} Wow, itu terasa baik untuk menyelesaikannya. Sejauh benar-benar mengubah kode untuk memperbaiki ini, berikut adalah apa yang saya dapatkan: Masukkan Kode BuyPriceMax = Bid- (TrailingBuy * Point); while (Bidgt; = BuyPriceMax) {RefreshRates (); if (Bidgt; BuyPriceMax (TrailingBuy * Point)) {BuyPriceMax = Bid- (TrailingBuy * Point); } Tidur (10000);/SLEEP 10 SECONDS} CATATAN: Anda dapat dan mungkin ingin meletakkan garis Sleep dan RefreshRates () sebelum atau setelah pernyataan if. Saya cukup yakin itu tidak akan mempengaruhi apa pun. Paling buruk komputer akan berjalan melalui loop satu kali tambahan, yang akan memakan waktu sekitar 1/1000 detik. Ketika harga naik: BuyPriceMax = 1.2700- (30 * Poin);/BuyPriceMax menjadi 1.2670 sementara (1.2700gt; = 1.2670) {//Ini benar RefreshRates ();/Sekarang katakan Bid naik ke 1.2703 jika (1.2703gt; 1.2670 (30 * Poin)) {//1.2703 lebih besar dari 1.2700, jadi lanjut ke baris berikutnya BuyPriceMax = 1.2703- (30 * Poin);/BuyPriceMax Baru 1.2773} Tidur (10000);/TIDUR 10 DETIK} Dan ketika harga turun: BuyPriceMax = 1.2700- (30 * Poin);/BuyPriceMax menjadi 1.2670 sementara (1.2700gt; = 1.2670) {//Ini benar RefreshRates ();/Sekarang katakan Bid turun ke 1.2660 jika (1.2660gt; 1.2670 (30 * Poin)) {//1.2660 tidak lebih besar dari 1.2700, jadi itu melompati baris berikutnya BuyPriceMax = Bid- (TrailingBuy * Point);/Garis dilewati} Tidur (10000);/TIDUR 10 DETIK} Maka itu akan kembali melalui loop sementara ... while (1.2660gt; = 1.2670) {//TIDAK benar, jadi itu akan keluar dari loop dan menjalankan perintah ...} Maaf posting yang sangat panjang, tetapi saya ingin menjelaskannya dengan seksama.

  3. #3
    Di mana sikap saya? Saya baru sadar itu adalah posting pertama Anda, jadi selamat datang di Pabrik! Ada banyak orang hebat di sini yang bersedia membantu Anda, serta banyak pengetahuan untuk dipelajari.

  4. #4
    Terima kasih - itu sangat membantu! Terima kasih atas sambutannya. Forum ini bagus.

  5. #5
    Yah, saya pikir semuanya akan terbang dengan menggerakkan refresh rate sebelum pernyataan if, tetapi ketika saya mencoba backtesting, sepertinya masih membeku seolah-olah itu dalam infinite loop Jika saya mengomentari loop while, sepertinya untuk menguji sisa skrip saya baik-baik saja. Jadi masih ada sesuatu dengan loop yang memberi saya masalah. Apakah ada pula untuk mencetak hasil loop dengan setiap iterasi sehingga saya bisa melihat apa yang dilakukannya? Mungkin refreshrate tidak benar-benar berfungsi saat Anda melakukan backtest?

  6. #6
    Saya menambahkan dua baris berikut sebelum garis Sleep untuk mencetak beberapa nilai ke log. testcomments = StringConenate (Bid =, Bid,; BuyPriceMax =, BuyPriceMax, Time =, TimeToStr (iTime (NULL, 0,0))); Cetak (testcomments); Kemudian, ketika saya menjalankan skrip dan memeriksa log, semua nilai, termasuk waktunya sama. Waktu TIDAK PERNAH bertambah, itu hanya terus mengeluarkan nilai Bid dan BuyPriceMax yang sama dengan nilai waktu yang sama. Ini sepertinya menunjukkan bahwa untuk beberapa alasan, penyegaran tidak memiliki efek dan waktu tidak berubah ketika pengujian ulang. Tetapi ketika saya menjalankannya tanpa loop, nilai-nilai waktu memang menemukan untuk setiap bar di layar hasil - jadi karena ada data historis yang muncul ketika menguji tanpa loop, saya bingung mengapa data historis itu tidak diperlukan dapat bekerja di loop ini? Ada pemikiran lebih lanjut? Sangat dihargai :-)

  7. #7
    Ketika Anda melakukan tes ulang, mungkin coba metode Setiap centang? Sudahkah Anda melakukan itu? Saya tidak tahu, ini mungkin yang sulit.

  8. #8
    Hai, hanya untuk membuang ide lain untuk Anda, untuk kode sesuatu seperti itu tanpa loop ... int HighestBarin10 = Tertinggi (Symbol (), 0, MODE_HIGH, 10,1);/temukan bilah tertinggi di 10 bilah terakhir (offset 1 bilah) ... ubah ke bilah lebih banyak jika Anda perlu int BuyPriceMax = Tinggi [HighestBarin10]; Memberi Anda harga bilah Tinggi jika (Bid lt; BuyPriceMax-30 * point) {OrderSend (Symbol (), dll, dll, dll)} Tidak menggunakan loop, tidak apa-apa hanya berjalan sepanjang waktu kutu baru . Saya lebih suka pengaturan seperti itu karena saya akan mempertimbangkan pola yang membutuhkan lebih dari x jumlah batang untuk rusak dan tidak sebanding dengan perdagangan dll. Hanya pemikiran yang tidak yakin apakah itu cocok dengan EA Anda atau tidak.

  9. #9
    Saya tidak tahu seberapa banyak Anda tahu tentang loop sementara dan berapa banyak yang saya tahu dibandingkan dengan Anda, jadi saya mungkin salah, tetapi melihat kode yang Anda tulis itu tampak bagi saya bahwa dalam loop sementara Anda menetapkan nilai yang sama dengan BuyPriceMax = Bid- (trailingBuy * Point) seperti sebelum loop. Jadi nilai yang menyebabkan iterasi dari loop sementara tidak bertambah tetapi selalu sama. Saya juga tahu bahwa while loop akan masuk ke infinite loop jika nilai iterasi tidak bertambah. Solusi yang mungkin? Saya tidak tahu Coba == alih-alih =. Itu tidak akan memberikan nilai ke BuyPriceMax, tetapi membuatnya egual untuk Bid- (trailingBuy * Point) Semoga membantu. (Masih belajar).

  10. #10
    Hai lietuve, Pikir saya adalah bahwa tingkat penawaran harus diperbarui dengan setiap penawaran diposting - oleh karena itu, seharusnya tidak selalu sama tetapi akan menyesuaikan. Refreshrates harus menarik kutipan terbaru. Oleh karena itu, saya pikir nilainya akan benar-benar menyesuaikan ke atas atau ke bawah seperti harga penawaran, dan kemudian jika mencapai titik di mana kondisi tidak lagi bertahan, maka akan keluar dari loop dan menempatkan pesanan. Terima kasih Fishtank atas masukan Anda. Tampaknya menjanjikan untuk beberapa sinyal lain, tetapi untuk apa yang saya coba lakukan - saya tidak tahu apakah itu akan berhasil. Saya mencari persyaratan tertentu yang harus dipenuhi sebelum EA saya melakukan perdagangan. Loop ini lebih merupakan penyempurnaan untuk mencoba masuk pada titik yang lebih baik. Misalnya, jika saya mencoba memasuki posisi Short ketika harga menembus band bollinger teratas, saya ingin EA menentukan apakah harga terus naik di atas band - karena sering, harga mungkin terus naik melalui beberapa bar sebelum memulai jatuh lagi - jadi saya tidak ingin memasuki perdagangan sampai mendekati puncaknya. Loop ini digunakan untuk menunda entri sampai ditentukan harga berbalik. Jadi saya sebut ini trailing buy saya. Saya ingin membiarkan harga terus naik, maka ketika itu mulai jatuh di bawah harga Short yang saya sesuaikan, ambil order Short pada kurs pasar. Ini berarti, bahwa semua perbandingan harga dapat terjadi di bar yang sama atau menyebar di beberapa bar. Karena ini keterlambatan, saya pikir itu perlu dilakukan melalui loop, tetapi apakah Bid bekerja dalam satu loop, saya tidak benar-benar tahu. Sejauh ini, sepertinya tidak mendapatkan penawaran terbaru.

Similar Threads

  1. Tawaran safe haven melambat karena dolar kembali menguat
    By jafha in forum Sistem dan Strategi Perdagangan
    Balasan: 0
    Postingan Terakhir: 08-10-2017 02:51, 02:51 AM
  2. mt4 - Masalah 'Loop Operator' - (tidak merespons)
    By hyuismie30 in forum Analisis Teknis
    Balasan: 0
    Postingan Terakhir: 11-04-2016 23:00, 11:00 PM
  3. mt4 - Masalah 'Loop Operator' - (tidak merespons)
    By hyuismie30 in forum Diskus Forex Umum
    Balasan: 0
    Postingan Terakhir: 11-04-2016 23:00, 11:00 PM
  4. Masalah MQL4 memeriksa tawaran saat ini vs centang lalu
    By httitavasco in forum Pertanyaan Newbie
    Balasan: 0
    Postingan Terakhir: 10-26-2016 11:51, 11:51 AM
  5. Masalah MQL4 memeriksa tawaran saat ini vs centang lalu
    By httitavasco in forum Diskus Forex Umum
    Balasan: 0
    Postingan Terakhir: 10-26-2016 11:51, 11:51 AM

Izin Posting

  • Anda tidak boleh memposting thread baru
  • Anda tidak boleh memposting balasan
  • Anda tidak boleh memposting lampiran
  • Anda tidak boleh menyunting postingan Anda
  •  
  • Kode BB Aktif
  • Smilies Aktif
  • Kode [IMG] Aktif
  • Kode [VIDEO] Aktif
  • Kode HTML tidak aktif
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.