for ( int i = 0 ; i <= OrdersTotal (); i++)
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
return ( false );
Ve burada bir döngü için parantez gerekli değil mi? Görünüşe göre sadece birden fazla satır olmadığında onları koyamazsınız.
Ah özür dilerim. Karışık karşılaştırma ve atama. Her şey normalleşti. Sanki oturuyormuşum gibi tamamen aptallaşıyorum. Kötü yazıyorum ve bundan stres alıyorum ve elbette bilmeme rağmen kafam hiç çalışmıyor.
Bir sipariş açtıktan sonra bCheckOrders() işlevi, sipariş olmadığını gösterir, bu nedenle açılışlar devam eder.
kahretsin. nerede belirtilir?
Belki bu dergiyi yanlış okuyorum?
İşlev bKontrolSiparişleri() bir emir açtıktan sonra, emir olmadığını gösteriyor, bu yüzden açılışlar devam ediyor - void OnTick() tarafından - Bunun böyle olmadığını anlıyorum.
sipariş kapanana kadar bCheckOrders()- sipariş olmadığını söyleyemez. değil mi?
İşlev bKontrolSiparişleri() bir emir açtıktan sonra, emir olmadığını gösteriyor, bu yüzden açılışlar devam ediyor - void OnTick() tarafından - Bunun böyle olmadığını anlıyorum.
sipariş kapanana kadar bCheckOrders()- sipariş olmadığını söyleyemez. değil mi?
bCheckOrders() düzgün çalışmıyor!
Sana zaten emirleri saymak için bir fonksiyon yazdım...
Bunu yapın ve her şey işe yaramalı.
bCheckOrders() öğesini bu işlevle değiştirin
//+------------------------------------------------------------------+//| Подсчет открытых ордеров |//+------------------------------------------------------------------+int CountOrders()
{
int cnt= 0 ;
int i= OrdersTotal ()- 1 ;
for ( int pos=i;pos>= 0 ;pos--)
{
if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()== _Symbol )
{
if (OrderMagicNumber()==Magic) cnt++;
}
}
}
return (cnt);
}
ve OnTick() içinde bCheckOrders() yerine şöyle yazın
//+------------------------------------------------------------------+voidOnTick ()
{
// Получим значение индикатора
dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif (CountOrders()== 0 )
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif (bSignalBuy() == true )
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif (bSignalSell() == true )
vOrderOpenSell();
}
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfitif (GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*- 1 )
{
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
CloseOrder();
}
DrawLABEL( "lab_Take" , 1 , 5 , 0 ,Color(GetProfitFromStart()> 0 ,Lime,Red), StringConcatenate ( "Profit: " ,DoubleToStr(GetProfitFromStart(), 2 ),AC));
}
yapılmış. kesinlikle önceki dergiden farklı değil.
hata veya herhangi bir şey yok.
Ve burada bir döngü için parantez gerekli değil mi? Görünüşe göre sadece birden fazla satır olmadığında onları koyamazsınız.
UPD:
Ve anlıyorum, burada bir satır var.
hata olmamalı, günlüğü göster
işte MT4 günlüğünün son sayfaları.
Bu dergiye ihtiyacın var mı?
işte MT4 günlüğünün son sayfaları.
Bu dergiye ihtiyacın var mı?
İşte günlüğünüzdeki cevap)
Bir sipariş açtıktan sonra bCheckOrders() işlevi, sipariş olmadığını gösterir, bu nedenle açılışlar devam eder.
ve elbette bilmeme rağmen kafa hiç çalışmıyor.
Güzel düşünceler ifade ediyorsun)))
Güzel düşünceler ifade ediyorsun)))
Yani ödev ve karşılaştırma yazmayı biliyordum ama yine de kafam karıştı. Kafam karıştı.
Bundan bahsetmiyorum...
pribludilsa # :
ve kafa hiç çalışmıyor , elbette bunu biliyordum .
İşte günlüğünüzdeki cevap)
Bir sipariş açtıktan sonra bCheckOrders() işlevi, sipariş olmadığını gösterir, bu nedenle açılışlar devam eder.
kahretsin. nerede belirtilir?
Belki bu dergiyi yanlış okuyorum?
İşlev bKontrolSiparişleri() bir emir açtıktan sonra, emir olmadığını gösteriyor, bu yüzden açılışlar devam ediyor - void OnTick() tarafından - Bunun böyle olmadığını anlıyorum.
sipariş kapanana kadar bCheckOrders()- sipariş olmadığını söyleyemez. değil mi?
kahretsin. nerede belirtilir?
Belki bu dergiyi yanlış okuyorum?
İşlev bKontrolSiparişleri() bir emir açtıktan sonra, emir olmadığını gösteriyor, bu yüzden açılışlar devam ediyor - void OnTick() tarafından - Bunun böyle olmadığını anlıyorum.
sipariş kapanana kadar bCheckOrders()- sipariş olmadığını söyleyemez. değil mi?
bCheckOrders() düzgün çalışmıyor!
Sana zaten emirleri saymak için bir fonksiyon yazdım...
Bunu yapın ve her şey işe yaramalı.
bCheckOrders() öğesini bu işlevle değiştirin
ve OnTick() içinde bCheckOrders() yerine şöyle yazın