[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 218

 
Söve olmadığını düşündüm - tekrar gözden geçireceğim - teşekkürler.
 
Hayır, bisikletler hakkında uymuyor. Bir zaman düzeltmesi yapmam gerekiyor - iki farklı terminalin zaman dilimleri arasındaki fark. Orada, saat sayar. Arızayı kendim arayacağım.
 
Aleksander :
başlangıçta - Sellstop emirlerinin döngüsünde bir alış emri olup olmadığını kontrol etmek için fonksiyonu çağırın... ve silin - açık emirler arasında alış emri yoksa...
Bir şey anlamıyorum, " Sellstop emirleri döngüsünde bir satın alma emrinin varlığı " ifadesi .
 

iyi bak...

Yerleşik siparişler arasında döngü (başlangıç)

izin almak

- Eğer bir Sellstop ise (sihirli numarasını hatırlayın - aynı zamanda bir satın alma emri biletidir {

vasıtasıyla

bool OrderSelect ( int dizini, int seçimi, int havuzu=MODE_TRADES)


kontrol et öyle bir emir var mı... - bu senin alış emrin...

orada değilse, mevcut Sellstop siparişi silinir

}

}sipariş döngüsünün sonu...

 
TheXpert :

InitsializeRealMasterOrders - burada bir söve arayın.

Ve bir şey daha - bisiklet yapmamak - https://docs.mql4.com/en/convert/timetostr



Hala bir aksaklık. Bir alt programda kod, bir metin belgesinin satırlarından veri okur:

4;NZDUSD;98537467;1;0.5;1340809155;0;0.7881;0;0.7939;0;0
4;NZDUSD;98537450;1;0.5;1340809147;0;0.788;0;0.7939;0.787;0

Emir açılış zamanı, satırdaki altıncı parametredir. Komutlarla datetime türündeki bir değişkene okundu:

Stroka=FileReadString(FileHandle);// Açılış zamanı
r_master_OpenTime[i]=StrToTime(Stroka);// Açılış saati

Sonuç olarak, r_master_OpenTime[i] değişkeninin Tanrı bilir hangi değer olduğu ortaya çıktı. Ancak türünü datetime'dan int'ye değiştirir değiştirmez her şey yolundaydı. Beş yıldan fazla bir süredir mql4'te programlama yapıyorum ve hala şaşkınım... :)

 
Aleksander :

iyi bak...

Yerleşik siparişler arasında döngü (başlangıç)

izin almak

- Eğer bir Sellstop ise (sihirli numarasını hatırlayın - aynı zamanda bir satın alma emri biletidir {

vasıtasıyla

bool OrderSelect ( int dizini, int seçimi, int havuzu=MODE_TRADES)


kontrol et öyle bir emir var mı... - bu senin alış emrin...

orada değilse, mevcut Sellstop siparişi silinir

}

}sipariş döngüsünün sonu...

işte böyle saçma sapan şeyler yazdım

   int       i, k= OrdersTotal ();
  
   for (i= 0 ; i<k; i++)
 if ( OrderType ()==OP_SELLSTOP)
     if ( OrderMagicNumber ()==ticket)
 if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) 
   if ( OrderType ()==OP_BUY) return (- 1 ); 
       else
        OrderDelete(OrderTicket());
Спасибо вроде работает))
 

drknn : Все равно глюк. В подпрограмме код считывает данные из строк текстового документа:

4;NZDUSD;98537467;1;0.5; 1340809155 ;0;0.7881;0;0.7939;0;0
4;NZDUSD;98537450;1;0.5; 1340809147 ;0;0.788;0;0.7939;0.787;0

Emir açılış zamanı, satırdaki altıncı parametredir. Komutlarla datetime türündeki bir değişkene okundu:

Stroka= FileReadString (FileHandlе); // Время открытия
r_master_OpenTime[i]= StrToTime (Stroka); // Время открытия

Sonuç olarak, r_master_OpenTime[i] değişkeninin Tanrı bilir hangi değer olduğu ortaya çıktı. Ama türünü datetime'dan int'ye değiştirir değiştirmez her şey yolundaydı. Beş yıldan fazla bir süredir mql4'te programlama yapıyorum ve hala şaşkınım... :)

Buradan
tarihsaat StrToTime ( dize değeri)
" yyyy.mm.dd [ss:mi] " biçiminde bir saat ve/veya tarih içeren bir dizeyi tarih saat türünde bir sayıya dönüştürme (01/01/1970 tarihinden itibaren geçen saniye sayısı)
Giriş verilerinin biçimi beklenenle eşleşmiyor
 

Lütfen bana aşağıdaki durumlarda ne yapacağımı söyleyin:

Test cihazındaki EA iyi çalışıyor, her şey plana göre gidiyor, ancak gerçek dünyada ticaret açmıyor

PS Ochn'un yardıma ihtiyacı var, bir ölüm kalım meselesi

 
Gek34 :

Hepinize iyi günler.

Sevgili kodlama uzmanları, bir gösterge yazmaya çalıştım, işe yarıyor gibi görünüyor, ancak yalnızca amaçlandığı gibi tarihten yararlanıyor ve ardından yeni alıntıların gelmesiyle sıradan bir fare çiziyor.

Kodu ekliyorum:

int start()
{
int counted_bars=IndicatorCounted();
int i,n;
double Stark=0;
//----
i=Bars-counted_bars-1;//+50;
// n=Bars-counted_bars-1;
while(i>=0)
{
//----

double Ma=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Stark+Step*Point<Ma)Stark=Ma;
if(Stark-Step*Point>Ma)Stark=Ma;
ABuf[i]=Stark;

//----
i--;
}
return(0);
}


Adımları çizmeye devam edebilmesi için düzeltmeye yardım et.

Şimdiden teşekkürler.

Geek.

Lütfen göstergenin tüm kodunu sağlayın
 
(f=1;f<Bars;f++) için yanlış olan nedir
{
Fiyat1 = ( iClose (Symbol_1,0,0) - iClose(Symbol_1,0,f)) / MarketInfo(Symbol_1, MODE_POINT);
Fiyat2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,f)) / MarketInfo(Symbol_2, MODE_POINT);
Fark = Fiyat1 - Fiyat2;
Print("Fiyat1="+Fiyat1, "Fiyat2="+Fiyat2);
if (Spread==0){t=f; kırmak;}
}
Fiyat12 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,t)) / MarketInfo(Symbol_1, MODE_POINT);
Fiyat22 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,t)) / MarketInfo(Symbol_2, MODE_POINT);
Spread2 = Fiyat12 - Fiyat22;


if (MathAbs(Spread2) >= razdvizka && Spread2 < 0) { bir ticaret açın }


Yayılmanın sıfıra eşit olduğu çubuğu düzeltmek ve ondan yayılmayı kontrol etmek istiyorum

Neden: