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

 
dimon74 :
yardımcı olabilir!! Tek bir fiyattan başlamaya çalışalım: Diyelim ki Teklif. OP_SELLSTOP için açılış fiyatı Bid olacak ve OP_BUYSTOP için Bid+87*Puan (veya neye ihtiyacınız varsa) olacak.
Fikir açık, teşekkürler!
 
Vinin :

Şimdi bir sihirbaz, parametrelerde ayarlandı

Yüzüne bak...
 

Bana yardım et lütfen. Belki biri kodda, geçmişten sondan bir önceki değeri sonuncusu ile karşılaştıran bir fonksiyonun nasıl uygulanacağını biliyordur ( kapalı konumlardan bahsediyoruz), hangi değer olursa olsun (örneğin, OrderCloseTime()) ve eğer farklılarsa (bu durumda, sondan bir önceki değer sondan daha azdır) - BLA-BLA-BLA üretin. Mümkünse, kodumu değiştirin veya yanlış yöne tırmandıysanız kendinizinkini yazın.

double C_T_L_C_P() {

datetime t;

double r=0;

int i, k=OrdersHistoryTotal(), q=0;

if (q==0)

for (i=0; i<k; i++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true) {

if (OrderType()==OP_BUY || OrderType()==OP_SELL) {

if (t<OrderCloseTime()) {r=OrderCloseTime();}

}}}

return (r);}

ŞİMDİDEN TEŞEKKÜRLER!!!

 

Doğrulama ile ilgili yardım.

İlk birimin ortaya çıkmasından sonra, bu birimin t + t1 süresi boyunca devam edip etmeyeceğini döngüde kontrol etmek gerekir (her delta saniyeyi kontrol edin). Eğer hayatta kalırsa, satın alırız ve bir noktada orada değilse, o zaman döngüden çıkarız. Başka bir deyişle, sinyal her delta aralığında belirli bir süre kontrol edildiyse ve her zaman bir olduysa geçerlidir.

Doğru mu düşünüyorum?

 if (sign0== 1 ) //проверка начинаертя только после появления 1 
     {
      t= TimeCurrent ();                                     //фиксируем время
                                                           //в цикле от t до t+t1 через каждые дельта секунд
       while (t<t+t1)                                       //t1 отрезок времени в перед за которое будем проверять if(sign0==1)
         {
            if (sign0== 1 )                                   //еще паз проверка наличия  1
              sign1= 1 ;                                    //новой переменой присваиваем 1
            else
              {sign1= 0 ; break ;}                             // если нет присваиваем 0 и заканчиваем цикл
            t=t+delta;                                     //проверяем через каждые дельта секунд
         }
      if (sign1== 1 ) op= "BUY" ;
            return ;
     }
 
gince :

Doğrulama ile ilgili yardım.

İlk birimin ortaya çıkmasından sonra, bu birimin t + t1 süresi boyunca devam edip etmeyeceğini döngüde kontrol etmek gerekir (her delta saniyeyi kontrol edin). Eğer hayatta kalırsa, satın alırız ve bir noktada orada değilse, o zaman döngüden çıkarız.

Doğru mu düşünüyorum?


Sonuç sonsuz bir while döngüsüdür (t her zaman <t+t1'dir, yalnızca t1=0 ise). Döngüde sign1 her zaman = 1
 
abolk :

Sonuç sonsuz bir while döngüsüdür (t her zaman <t+t1'dir, yalnızca t1=0 ise). Döngüde sign1 her zaman = 1

Hata nasıl düzeltilir?
 
gince :

Hata nasıl düzeltilir?

Hatayı düzeltmek için algoritmayı (kodu değil, algoritmayı) ayrıntılı olarak belirtmek gerekir. Ve sonra kodu algoritmaya koyun
 
abolk :

Hatayı düzeltmek için algoritmayı detaylı olarak belirtmek gerekir.

0 veya 1'lik ayrı bir sinyal gelir.Bir birim geldiyse, bu andan itibaren her 60 saniyede bir kontrol ederek 10 dakika (600 saniye) sürebileceğini kontrol etmeye başlarız. 10 dakikanın hepsinde bir tane varsa - Satın alın ve en az bir kez kimse yoksa, kontrolü bitiririz ve açılacak bir sinyal olmadığını düşünürüz.
 
gince :

0 veya 1'lik ayrı bir sinyal gelir.Bir birim geldiyse, bu andan itibaren her 60 saniyede bir kontrol ederek 10 dakika (600 saniye) sürebileceğini kontrol etmeye başlarız. 10 dakikanın hepsinde bir tane varsa - Satın alın ve en az bir kez kimse yoksa, kontrolü bitiririz ve açılacak bir sinyal olmadığını düşünürüz.

Ayrık sinyal işareti0'ın nasıl değiştiği kodda açık değildir. Sunulan kodda - sinyal değişmez. Değiştirilmiş bir t ile çalışmak için başarısız bir girişim var
 
void CheckForOpen()
  {
   
   int    res;
   datetime t;
   int sign= 0 ;
//---- go trading only for first tiks of new bar


  
  double tr0= iCustom ( NULL , 0 , "trd" , 0 , 0 );
  double tr1= iCustom ( NULL , 0 , "trd" , 1 , 0 ); 
//---- sell conditions
   if (tr1== 1 )  
     {
      t= TimeCurrent ();
       while (t<t+tim)
         {
            if (tr1== 1 )
              sign=- 1 ;
            else
              {sign= 0 ; break ;}
            t=t+delta;
         }
      if (sign==- 1 ) 
      res= OrderSend ( Symbol (),OP_SELL,LotsOptimized(),Bid, 3 ,Bid+StopLoss* Point ,Bid-TakeProfit* Point , "" ,MAGICMA, 0 , Red );
      return ;
     }
Bu, Hareketli Ortalama.mq4'ten alınmıştır.