Nasıl kodlanır? - sayfa 115

 
matrixebiz:
Bunu yaparak aynı şeyi yapmıyor muyum?;

if (Saat() 17) TicaretSaati = yanlış;

Anlamı, saat 12 ile 17 arasındaysa TradeHour=true , doğru mu?

(Al/Sat ekstreme && TradeHour ekleme)

Aşağıdaki ifadeyi reddetmek:

if(Hour()>=12 && Hour()<17)

TradingEnabled=true;

[/CODE]

is

[CODE]

if(Hour()=17)

TradingEnabled=false;

 

Bir şey daha Bir işlem yeni açılıp kapatılmışsa, 60 dakika kadar beklemek için koda yeniden giriş gecikmesini nasıl eklerim, ardından işlem koşullarının hala karşılanıp karşılanmadığını tekrar kontrol edin .

Teşekkür ederim

 
matrixebiz:
Bir şey daha Bir işlem yeni açılıp kapatılmışsa, 60 dakika kadar beklemek için koda yeniden giriş gecikmesini nasıl eklerim, ardından işlem koşullarının hala karşılanıp karşılanmadığını tekrar kontrol edin. Teşekkür ederim

Talebinizin ne olduğu belli değil.

Bir ticari durum kontrolü ile bir sonraki arasında 60 dakika beklemek ister misiniz?

Bu sizin isteğinizse, bu işe yarayabilir:

// Global variable

bool TradingEnabled = true; // flag to enable/disabled trading logic

bool TradingCheckDone = false; // flag to know if a a check was just done

datetime LastCheckTime = 0; // Time when the last check was done

.... somewhere in EA start() function ....

if( !TradingCheckDone )

{

// Default: We assume that trading logic must run ...

TradingEnabled = true;

// ... but only between 12:00:00 and 16:59:59

if(Hour()=17)

TradingEnabled=false;

// We must remember a check was just done

TradingCheckDone = true;

// We must even know when it was done

LastCheckTime = TimeCurrent();

} else

{

// if a hour has passed since the last check, it's time to retry

if( TimeCurrent() - LastCheckTime >= 3600 )

{

TradingCheckDone = false;

}

}

 
gorgoroth:
Talebinizin ne olduğu belli değil.

Bir ticari durum kontrolü ile bir sonraki arasında 60 dakika beklemek ister misiniz?

Bu sizin isteğinizse, bu işe yarayabilir:

// Global variable

bool TradingEnabled = true; // flag to enable/disabled trading logic

bool TradingCheckDone = false; // flag to know if a a check was just done

datetime LastCheckTime = 0; // Time when the last check was done

.... somewhere in EA start() function ....

if( !TradingCheckDone )

{

// Default: We assume that trading logic must run ...

TradingEnabled = true;

// ... but only between 12:00:00 and 16:59:59

if(Hour()=17)

TradingEnabled=false;

// We must remember a check was just done

TradingCheckDone = true;

// We must even know when it was done

LastCheckTime = TimeCurrent();

} else

{

// if a hour has passed since the last check, it's time to retry

if( TimeCurrent() - LastCheckTime >= 3600 )

{

TradingCheckDone = false;

}

}

Hayır, sadece bir Ticaret yeni gerçekleştiyse ve kapandıysa, EA'nın bir saat beklemesini ve ardından ticaret koşullarının hala karşılanıp karşılanmadığını kontrol etmesini istiyorum, eğer öyleyse, o zaman tamam, tekrar ticaret yapın ama öyle değilse. Bu kod o zaman istediğimi yapacak mı? Bu, TimeCurrent kontrolü nedeniyle test cihazında çalışacak mı?

EDIT: Her saat bir işlem kapandıktan hemen sonra kontrolü yapmayın, sonra durum kontrolü için bir saat bekleyin ve o kadar. Ardından, bir günde başka bir İşlem oluşturulur ve kapanırsa, bir saat daha bekleyin ve sinyal yoksa, bir sonraki işlemin açılıp kapanmasına kadar bekleyen kontroller yoktur.

Teşekkür ederim

Bahsettiğim doğru ayarlarla değiştirebilirseniz, ekli küçük bir EA. teşekkürler

Dosyalar:
ozfx_method.mq4  11 kb
 

Buy_Limit ve Buy_Stop

Limit emri ile Stop emri arasındaki fark nedir?

teşekkürler

 
gorgoroth:
Herkese selam,

Bir EA'dan yapılandırma ayarlarını yönetmek için bir dizi işlev geliştirdim.

Bu işlevler bir c++ DLL tarafından dışa aktarılır ve dışa aktarılan işlevlerin her biri MQL4'üm için istenen __stdcall çağrı kuralına sahiptir.

Sorunum, bir işlevin EA'ya bir dize döndürmesi gerektiğinde ortaya çıkıyor.

Doğal olarak işlev şunları yapamaz:

- bir işaretçiyi yerel bir değişkene döndürür (değişken kapsam dışına çıkar)

- bir dll global değişkenine bir işaretçi döndürme (eşzamanlı erişimle ilgili sorunlar)

- yığın ayrılmış bir dizgeye bir işaretçi döndür (EA'dan çağrılacak belleği boşaltmak için işlevlere ihtiyaç var: Bu yaklaşımı sevmiyorum)

Bu yüzden EA'dan bir dize ve dize boyutu iletmeye karar verdim. Es:

string buffer;

GetString( buffer, 30 );

[/CODE]

and from the c++ dll, something like this

void __stdcall GetString( LPTSTR buffer, int BufSize )

{

// Read a string from a some source

....

// -1 to take into account the terminating null character

StringCchCopy( buffer, BufSize-1, ReadStringFromASource );

}

[/CODE]

Here starts the weird behaviour of MQL managing strings returned from a DLL.

using the following code:

string buffer;

GetString( buffer, 30 );

the first time buffer contains the right string. A first question arises: buffer is not initialized but after calling GetString it contains the string returned. I have to suppose that MQL allocates space for a string variable when it's declared.

Next time GetString() is called the string returned seems to be truncated to the length-1 of the previous string length and not resetted as expected because of the 'string buffer;' statement.

Tried even:

[CODE]

string buffer = " "; // 'allocate' 30 blank characters

GetString( buffer, StringLen(buffer) );

but after the first time, when the execution returns to this code, the assignment of buffer does not work any more and buffer still contains the previous read string, and it seems it can only contains the number of characters of his content.

At first I have thought that the null character is not handled very well by MQL and modified the c++ code like this ...

[CODE]

CopyMemory( buffer, ReadStringFromASource, min(BufferSize,ReadStringFromASourceLength) );

ve sonlandırıcı boş karakteri eklememek.

Ancak MQL'den çağrıldığında hiçbir dize dönmüyor.

Birinin cevabı var mı?

DLL'lerden dize döndürmede sorun yaşayan yok mu?

 

Yardıma ihtiyacım var..

Biri bana bir kod gösterebilir mi? EA'ma eklemek için ..

Sinyal başına bir sipariş..Çünkü bazen 3 sinyalim var farklı TF'nin nedeni..Tüm sinyallerin açılmasını istiyorum..

veya çubuk başına bir sipariş alacak, ancak her Zaman Çerçevesi bir EA'ya eklenecek bir kod .. çok fazla grafik açmak istemiyorum ..

 

BuyStop'umda sorun ne?

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Distance*Point,Slippage,Bid-Distance-StopLoss*Point,Ask+Distance+TakeProfit*Point,"",MagicNumber,0,Blue);

 
matrixebiz:
BuyStop'umda sorun ne?

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Distance*Point,Slippage,Bid-Distance-StopLoss*Point,Ask+Distance+TakeProfit*Point,"",MagicNumber,0,Blue);

Kaybetmeyi Durdur ve Kar Al ..

eklemeden önce mesafenize *noktasını da eklemelisiniz..

VEYA

Teklif-((Mesafe-StopLoss)*Puan),Sor+((Mesafe+Kar Al)*Puan)

 
Neden: