...그리고 결정을 내리십시오 - 여기에 "Villagers" 지점의 ILANINS 중 하나의 코드 섹션도 있습니다. - 시장 주문의 평균 가격과 PriceTarget의 목표 가격 계산 - 이것은 사용된 수준 + TP입니다. . TR은 이미 귀하의 재량에 달려 있습니다. 필요에 맞게 수정하십시오.
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);
}
이 함수 대신 NewOrdersPlaced () 및 OrderModify ()
사용된 라인의 드로잉(전시) 수준을 갖게 됩니다. 전체 모자이크는 귀하의 손에 달려 있습니다.
여기에 내 코드 섹션이 있습니다. 이 특정 Expert Advisor의 연속 손실 거래의 총 손실을 고려하는 책임이 있습니다(마법에 따라). 나는 그물 Avalanche의 내 버전을 위해 그것을 만들었습니다 - 당신의 필요에 맞게 편집하십시오 - 코드는 주석 처리되어 있습니다 ...
전역 변수
코드의 이 섹션 다음에 이 특정 Expert Advisor의 이미 열려 있는 주문을 순환하고 총 이익을 계산합니다. 그런 다음 이 값을 변수와 비교합니다.
또한, 이 문제에 관해서는 올빼미 코드를 완전히 분석하는 것이 유용할 수 있습니다. 지난 포스트에서 사용된 레벨은 SELYAN 분기 Double_Minus_1의 ILANIN입니다. 뼈대로 분해하면 문제의 해결책이 더 명확해질 것입니다, IMHO. 선을 그리면 여기에서 이미 개체 작업을 할 수 있어야 합니다. 그런 것들, IMHO, "중급의 스페셜(프로그래머)"가 즉각적이고 뻔뻔하게 해결되지 않습니다... :-)
단순화된 버전으로 시도하고 첫 페이지에서 Yuri Reshetov가 추천한 방법을 확인하십시오. 내 코드 바로 뒤에 그의 코드를 입력하십시오.
주석이 포함된 전체 코드를 참조하세요.
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 ) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
}
}
} // Конец старт
중요한 것은 여기에서 사용된 수준을 초과할 때 작업에 대한 코드를 입력하는 것을 잊지 마십시오.
if (Sum_Loss < 0.0 ) { // Имеем убыток по закрытым позамif (( AccountEquity + Sum_Loss) >= AccountBalance )
{
// Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
}
}
...그리고 결정을 내리십시오 - 여기에 "Villagers" 지점의 ILANINS 중 하나의 코드 섹션도 있습니다. - 시장 주문의 평균 가격과 PriceTarget의 목표 가격 계산 - 이것은 사용된 수준 + TP입니다. . TR은 이미 귀하의 재량에 달려 있습니다. 필요에 맞게 수정하십시오.
이 함수 대신 NewOrdersPlaced () 및 OrderModify ()
사용된 라인의 드로잉(전시) 수준을 갖게 됩니다. 전체 모자이크는 귀하의 손에 달려 있습니다.
여기에 내 코드 섹션이 있습니다. 이 특정 Expert Advisor의 연속 손실 거래의 총 손실을 고려하는 책임이 있습니다(마법에 따라). 나는 그물 Avalanche의 내 버전을 위해 그것을 만들었습니다 - 당신의 필요에 맞게 편집하십시오 - 코드는 주석 처리되어 있습니다 ...
전역 변수
코드의 이 섹션 다음에 이 특정 Expert Advisor의 이미 열려 있는 주문을 순환하고 총 이익을 계산합니다. 그런 다음 이 값을 변수와 비교합니다.
그리고 결정을 내립니다.
'반복' - 변수가 정의되지 않음 D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (234, 17)
'반복' - 변수가 정의되지 않음 D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (204, 3)
'반복' - 변수가 정의되지 않음 D:\ïðîãgrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (234, 17)
이전에 Yuri Reshetov가 제공한 간단한 방법을 보십시오. 페이지.
적합하지 않은 경우 제공된 코드 섹션에서 모자이크를 수집하십시오.
또한, 이 문제에 관해서는 올빼미 코드를 완전히 분석하는 것이 유용할 수 있습니다. 지난 포스트에서 사용된 레벨은 SELYAN 분기 Double_Minus_1의 ILANIN입니다. 뼈대로 분해하면 문제의 해결책이 더 명확해질 것입니다, IMHO. 선을 그리면 여기에서 이미 개체 작업을 할 수 있어야 합니다. 그런 것들, IMHO, "중급의 스페셜(프로그래머)"가 즉각적이고 뻔뻔하게 해결되지 않습니다... :-)
평균화 및 설정에 대한 올빼미 코드는 예고편에서 + TR을 사용했습니다.
그것은 실수가 아니다. 로그의 오류는 노란색 아이콘 대신 빨간색으로 표시됩니다.
그러면 작동하지 않는 이유는 무엇입니까?
여기에 스카이프가 없습니다.
단순화된 버전으로 시도하고 첫 페이지에서 Yuri Reshetov가 추천한 방법을 확인하십시오. 내 코드 바로 뒤에 그의 코드를 입력하십시오.
주석이 포함된 전체 코드를 참조하세요.
스카이프가 없습니다.
단순화된 버전으로 시도하고 첫 페이지에서 Yuri Reshetov가 추천한 방법을 확인하십시오. 내 코드 바로 뒤에 그의 코드를 입력하십시오.
주석이 포함된 전체 코드를 참조하세요.
'TotalCloseProfit' - 변수가 정의되지 않음 D:\ïðîãrámmy\MetaTrader 4 - RoboForex\experts\NewCobWebPivot.mq4 (251, 24)
중요한 것은 여기에서 사용된 수준을 초과할 때 작업에 대한 코드를 입력하는 것을 잊지 마십시오.