[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 555

 
granit77 >> :
Лот и магик никто не имеет права трогать, а к комментарию на хвост будет дописка брокера. Но свой комментарий всегда можно найти поиском подстроки.

Forumda bir yerde, prensipte bir yorumun bir komisyoncu tarafından tamamen değiştirilebileceğini okudum. Onlar. Sonuç olarak, Expert Advisor bir broker ile olması gerektiği gibi çalışacak ve diğerinde tamamen yanlış çalışacaktır. Sihri oluşturmak için tüm "değişmez" parametrelere ihtiyaç vardır. Bu nedenle, sadece el değmeden kalacak olanları kullanmak istiyorum.

 
drknn >> :

Sinyalinizin geri dönüşe kadar uzandığını söylüyorsunuz. Ama bu da atlanabilir. Piyasada emir yok - bir sinyalin varlığını kontrol ediyoruz. Bir sinyal belirdi - bir pozisyon açtık, sinyal bayrağını kaldırdık (değişkeni sıfırladık) ve karşı sinyal (kısa) görünene kadar artık bir sinyalin (örneğin uzun bir sinyal) varlığını kontrol etmiyoruz. Böylece, belirli bir türde bir sinyalin varlığının bayrağı genellikle birkaç saniye yaşar - bayrak ayarlanır, sıra ayarlanır, bayrak kaldırılır - karşı sinyali bekliyoruz. Tersi ortaya çıktı, karşı sinyalin bayrağı ayarlandı ve bayrak ayarlanarak önceden izlenmesi yasak olan sinyallerin izlenmesine izin verildi.

Expert Advisor'ın başlangıcı (start() işlevi değil, yalnızca işin başlangıcı):

- hem uzun hem de kısa sinyalleri izlemek için izin veriyoruz.

Uzun bir sinyal belirdi:

- kısa sinyalleri izlemek için izin verin

- Uzun bir sipariş verdik ve bu sipariş bittiyse, o zaman

- Uzun sinyalleri takip etmek için izin veren bayrağı kaldırıyoruz.

Kısa bir sinyal belirdi

- Siparişleri genişletme hakkı varsa, uzun siparişi kapatın ve kısa olanı ayarlayın

- Uzun sinyalleri izlemeye izin veren bayrağı ayarlayın ve kısa sinyalleri izlemeye izin veren bayrağı kaldırın.

Genel olarak, bayraklar anahtarlardır. Ayrıca anahtarlar değil, anahtarlar tasarlayabilirsiniz. Bu durumda danışman, hangi durumda olduğuna dair bir hafızaya sahip olan sibernetik bir otomatın ilkeleri üzerinde çalışmaya başlar. Bu, örneğin bir tamsayı değişkeni bildirerek ve buna durum numaraları atayarak başarılabilir. Örneğin, başlatma bloğuna şunu yazıyoruz:

sostojanie=0;

Ancak zaten başlangıçta, danışman sıfır durumunda (if(Sostojanie==0){}) danışmanın yalnızca A, B ve C işlemlerini gerçekleştirmesine izin verildiğini bilir. Ve bir veya daha fazlasının sonucuna bağlı olarak bu işlemler, danışman hangi duruma gidileceğini (Sostojanie=1;// veya 2 veya 3, vb.) veya tam tersi, mevcut durumda kalıp kalmayacağını seçer.

Her durumda danışman neyi yapıp neyi yapamayacağını ve hangi koşullar altında farklı bir duruma geçmesi gerektiğini bilir.

Harika bir fikir için çok teşekkürler. kesinlikle alacağım...
Sana iyi şanslar!
 
bu tasarım neden çalışmıyor? double tmp=Sor; while(Sor<=tmp) tmp=Sor; döngüden çıkmaz, yani Ask her zaman tmp'ye eşittir. RefreshRates() de yardımcı olmuyor. sorun ne söyle
 

Bir test cihazındaysa, çalışmaz ve savaş koşullarındaysa, döngünün içine Sleep() koyun.

 
gerçek hayatta işe yarayacak mı? .. eğer öyleyse, o zaman yarım yatak ETO'nun test cihazında çalışması nasıl sağlanır?
 

Koda bakmalısın, yoksa sadece tahmin olur, ben medyum değilim.

 
double tmp=Sor; while(Sor<=tmp) tmp=Sor; Yazdır ("ÇALIŞTI!"); işte kodun tamamı
 

test cihazı için yapabilirsiniz

 double tmp=Ask; 
if (Ask<=tmp) 
  {
  tmp=Ask; 
   Print ( "ЕТО ЗАРАБОТАЛО!" ); 
  }
 
Bir döngüye ihtiyacım var, bir koşula değil ... while'a ihtiyacım var (bu gerçekleşene kadar daha ileri gitmesine izin vermeyin, ancak bu olacak, çünkü Ask <= tmp her zaman olamaz)
 
maryan.dirtyn >> :
мне нужен именно цикл
 double tmp= 0 ; 
while (Ask<tmp || Ask>tmp){ // цикл выполняется до тех пор, пока условие истинно
                          //именно фактор наличия истины в условии запускает цикл в работу и держит его во включенном состоянии
  RefreshRates(); // проверяем поступление новой котировки
  if (tmp!=Ask){ //пришла новая котировка
    tmp=Ask; // выполняем какие-то действия...
    Print ( "ЕТО ЗАРАБОТАЛО!" );
    break ; //выходим из цикла после почти бесконечного числа итераций, которые тупо пригрузили мой проц
  }
}

Mola kullanmamak mümkündür; Sadece döngü yineleme akışının zorla kesintiye uğrama olasılığını unutmamanız için işaret ettim.
Neden: