...ve bir karar verin - işte sizin için "Köylüler" şubesinin ILANINS'lerinden birinin kod bölümü - piyasa emirlerinin ortalama fiyatının ve PriceTarget'ın hedef fiyatının hesaplanması - bu kullanılan seviye + TP . TR zaten sizin takdirinize bağlı - ayrıca ihtiyaçlarınıza göre düzenleyin:
total=CountTrades();
AveragePrice = 0 ;
double Count = 0 ;
for (cnt= OrdersTotal ()- 1 ; cnt>= 0 ; cnt--)
{
OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES);
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=MagicNumber) continue ;
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL)
{
AveragePrice+= OrderOpenPrice ()* OrderLots ();
Count+= OrderLots ();
}
}
}
if (total> 0 ) AveragePrice= NormalizeDouble (AveragePrice/Count, Digits );
if (NewOrdersPlaced)
{
for (cnt= OrdersTotal ()- 1 ; cnt>= 0 ; cnt--)
{
OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES);
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=MagicNumber) continue ;
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()==OP_BUY)
{
PriceTarget= AveragePrice + TakeProfit * Point ;
BuyTarget=PriceTarget;
Stopper=AveragePrice-Stoploss* Point ;
flag=TRUE;
}
}
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()==OP_SELL)
{
PriceTarget= AveragePrice - TakeProfit * Point ;
SellTarget = PriceTarget;
Stopper=AveragePrice+Stoploss* Point ;
flag=TRUE;
}
}
}
}
if (NewOrdersPlaced)
{
if (flag == TRUE)
{
for (cnt= OrdersTotal ()- 1 ; cnt>= 0 ; cnt--)
{
OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES);
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=MagicNumber) continue ;
if ( OrderSymbol ()== Symbol () && OrderMagicNumber () == MagicNumber) OrderModify ( OrderTicket (),AveragePrice, OrderStopLoss (),PriceTarget, 0 , Yellow );
NewOrdersPlaced = FALSE;
}
}
}
}
return ( 0 );
}
//???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????int CountTrades()
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade>= 0 ; trade--)
{
OrderSelect (trade,SELECT_BY_POS,MODE_TRADES);
if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=MagicNumber) continue ;
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber)
if ( OrderType ()==OP_SELL || OrderType ()==OP_BUY) count++;
}
return (count);
}
Bu işlev yerine NewOrdersPlaced () ve OrderModify ()
Kullandığınız çizginin çizim (sergileme) düzeyine sahip olacaksınız - tüm mozaik sizin elinizde - düzenleme.
İşte kod bölümüm - bu belirli Uzman Danışmanın (büyüye göre) art arda kaybedilen işlemlerin toplam kaybını hesaba katmaktan sorumlu. Ağ Çığ versiyonum için yaptım - ihtiyaçlarınıza göre düzenleyin - kod yorumlanır ...
genel değişkenler
Kodun bu bölümünden sonra, bu Uzman Danışmanın zaten açık olan siparişleri arasında geçiş yapar ve toplam kârlarını hesaplarsınız. Sonra bu değeri bir değişkenle karşılaştırın
Yuri Reshetov'un önceki bölümde size sunduğu basit yola bakın. sayfa.
Size uymuyorsa, mozaiği size sunulan kod bölümlerinden toplayın.
Ayrıca bu konuda baykuş kodunu tam olarak incelemek faydalı olabilir - son mesajımdan itibaren - kullanılan seviye SELYAN şubesinden Double_Minus_1 ILANIN'dir. Onu kemiklerinden sökerseniz, sorununuzun çözümü daha net hale gelecektir, IMHO. Bir çizgi çizerseniz, burada zaten nesnelerle çalışabilmeniz gerekir. BÖYLE şeyler, IMHO, "orta seviyenin özel (programcısı)" hemen ve küstahça çözülmez ... :-)
Fragmanda kullanılan ortalama ve ayardaki baykuş kodu + TR.
Basitleştirilmiş bir versiyonda deneyin, Yuri Reshetov'un ön sayfada size nasıl önerdiğini görün - benimkinden hemen sonra onun kodunu yazın.
Yorumlarla birlikte kodun tamamına bakın:
double Level_new, PointValue,
lots; // вспомогательная переменная для расчета нового размера лота при очередной итерацииint Iteration, Counter_Loss, Ticket_at_history; // счетчик для подсчета последовательного убытка позиций колен лавины//bool Flag_Counter_Loss = false;double Current_Loss, Sum_Loss; // текущий и суммарный убытокint start() // -----------------------СТАРТ ЭКСПЕРТА---------------
{
//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
Iteration = 0 ; // зануляем инерации перед их учетом в цикле по истории
Sum_Loss = 0 ; // суммарный убыток по этим итерациямdatetime
Time_at_History_Current = 0 ,
Time_at_History_Previos = 0 ;
if ( OrdersHistoryTotal () != 0 )
{
for ( int counter = OrdersHistoryTotal ()- 1 ; counter >= 0 ; counter--)
{
OrderSelect (counter, SELECT_BY_POS, MODE_HISTORY);
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
{
if ( OrderType () == OP_BUY || OrderType () == OP_SELL)
{
if ( OrderProfit () < 0 ) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера// для последующего его анализа при подсчете количества итераций
{
double lastLoss = OrderProfit ();
Sum_Loss=Sum_Loss+lastLoss; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime ();
}
//Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));//Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));if (Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
{
Time_at_History_Previos = Time_at_History_Current ;
Iteration++;
//Print("Iteration at History в условии сравнения = ", Iteration);
}
else// они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
{
if ( OrderProfit () >= 0 )
break ;
}
}
}
}
}
if (Sum_Loss < 0.0 ) { // Имеем убыток по закрытым позамif (( AccountEquity + Sum_Loss) >= AccountBalance ) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
}
}
} // Конец старт
Önemli olan - burada kullanılan seviye aşıldığında yapılacak işlemler için KODUNUZU girmeyi unutmayın:
if (Sum_Loss < 0.0 ) { // Имеем убыток по закрытым позамif (( AccountEquity + Sum_Loss) >= AccountBalance )
{
// Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
}
}
...ve bir karar verin - işte sizin için "Köylüler" şubesinin ILANINS'lerinden birinin kod bölümü - piyasa emirlerinin ortalama fiyatının ve PriceTarget'ın hedef fiyatının hesaplanması - bu kullanılan seviye + TP . TR zaten sizin takdirinize bağlı - ayrıca ihtiyaçlarınıza göre düzenleyin:
Bu işlev yerine NewOrdersPlaced () ve OrderModify ()
Kullandığınız çizginin çizim (sergileme) düzeyine sahip olacaksınız - tüm mozaik sizin elinizde - düzenleme.
İşte kod bölümüm - bu belirli Uzman Danışmanın (büyüye göre) art arda kaybedilen işlemlerin toplam kaybını hesaba katmaktan sorumlu. Ağ Çığ versiyonum için yaptım - ihtiyaçlarınıza göre düzenleyin - kod yorumlanır ...
genel değişkenler
Kodun bu bölümünden sonra, bu Uzman Danışmanın zaten açık olan siparişleri arasında geçiş yapar ve toplam kârlarını hesaplarsınız. Sonra bu değeri bir değişkenle karşılaştırın
ve bir karar ver.
'Yineleme' - değişken tanımlanmadı D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (234, 17)
'Yineleme' - değişken tanımlanmadı D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (204, 3)
'Yineleme' - değişken tanımlanmadı D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (234, 17)
Yuri Reshetov'un önceki bölümde size sunduğu basit yola bakın. sayfa.
Size uymuyorsa, mozaiği size sunulan kod bölümlerinden toplayın.
Ayrıca bu konuda baykuş kodunu tam olarak incelemek faydalı olabilir - son mesajımdan itibaren - kullanılan seviye SELYAN şubesinden Double_Minus_1 ILANIN'dir. Onu kemiklerinden sökerseniz, sorununuzun çözümü daha net hale gelecektir, IMHO. Bir çizgi çizerseniz, burada zaten nesnelerle çalışabilmeniz gerekir. BÖYLE şeyler, IMHO, "orta seviyenin özel (programcısı)" hemen ve küstahça çözülmez ... :-)
Fragmanda kullanılan ortalama ve ayardaki baykuş kodu + TR.
Bu bir hata değil. Günlükteki hatalar sarı simgeler yerine kırmızı ile işaretlenmiştir.
O zaman neden çalışmıyor?
Burada skype'ım yok.
Basitleştirilmiş bir versiyonda deneyin, Yuri Reshetov'un ön sayfada size nasıl önerdiğini görün - benimkinden hemen sonra onun kodunu yazın.
Yorumlarla birlikte kodun tamamına bakın:
Skype'ım yok.
Basitleştirilmiş bir versiyonda deneyin, Yuri Reshetov'un ön sayfada size nasıl önerdiğini görün - benimkinden hemen sonra onun kodunu yazın.
Yorumlarla birlikte kodun tamamına bakın:
'TotalCloseProfit' - değişken tanımlanmadı D:\ïðîãrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (251, 24)
Önemli olan - burada kullanılan seviye aşıldığında yapılacak işlemler için KODUNUZU girmeyi unutmayın: