//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick ()
{
//---if (bln_find_order) // true -> you should look for a order
{
staticlong counter= 0 ;
Print ( "Attempt number " ,counter);
ResetLastError ();
if ( HistoryOrderSelect (ul_find_order))
{
long type_order= HistoryOrderGetInteger (ul_find_order, ORDER_TYPE );
if (type_order== ORDER_TYPE_SELL_STOP )
{
Print ( "The pending order " ,ul_find_order, " is found! Type of order is " ,
EnumToString (( ENUM_ORDER_TYPE ) HistoryOrderGetInteger (ul_find_order, ORDER_TYPE )));
bln_find_order= false ; // true -> you should look for a order
counter= 0 ;
return ;
}
else
{
Print ( "The order " ,ul_find_order, " is not pending" );
bln_find_order= false ; // true -> you should look for a orderreturn ;
}
}
else
{
Print ( "Order " ,ul_find_order, " is not find, error#" , GetLastError ());
}
counter++;
}
}
모든 것이 특정 지점까지는 잘 됩니다. 다른 유형의 주문이 역사에 나타날 때까지.
예: SELL_LIMIT.
SELL_LIMIT이 기록에 나타나는 즉시 마지막 SELL_STOP 티켓을 더 이상 얻을 수 없습니다.
EA에서 오류가 발생합니다.
주문 9가 보류 중이 아닙니다.
역사상 SELL_STOP이지만
그리고 7일에 티켓이 필요한데 9일이 그것과 무슨 상관이야
어드바이저는 전체 히스토리가 아니라 마지막 히스토리에서만 필요한 순서를 찾고 있는 것 같습니다.
보류중인 주문 이 트리거 된 순간을 결정할 수있는 고문이 있습니다.
https://www.mql5.com/en/code/17610
그것으로 SELL_STOP 주문 티켓을 얻습니다.
에 따라 코드를 변경했습니다.
모든 것이 특정 지점까지는 잘 됩니다. 다른 유형의 주문이 역사에 나타날 때까지.
예: SELL_LIMIT.
SELL_LIMIT이 기록에 나타나는 즉시 마지막 SELL_STOP 티켓을 더 이상 얻을 수 없습니다.
EA에서 오류가 발생합니다.
주문 9가 보류 중이 아닙니다.
역사상 SELL_STOP이지만
그리고 7일에 티켓이 필요한데 9일이 그것과 무슨 상관이야
안녕하세요. StopLoss_= 0 인 경우 오류가 발생합니다.
실패 수정 #2 판매 3.00 Si-9.18 sl: 0, tp: 62749 -> sl: 0, tp: 62774 [잘못된 정류장]
안녕하세요. StopLoss_= 0 인 경우 오류가 발생합니다.
실패 수정 #2 판매 3.00 Si-9.18 sl: 0, tp: 62749 -> sl: 0, tp: 62774 [잘못된 정류장]
잘못된 프로그램 작성 논리.
StopLoss_=0인 경우 상위 조건이 트리거 됩니다. 즉, TakeProfit을 수정하려는 시도입니다. 실수는 공개 가격에서 빼는 것입니다. 이 경우 TakeProfit 수준은 현재 가격보다 높을 수 있으며 이는 실수입니다.
귀하의 경우 CURRENT PRICE(m_position.PriceCurrent)에서 빼야 합니다.
매도 포지션이 열렸고 , Selllimit가 활성화되었습니다. 현재 가격이 아닌 새 포지션 가격을 기준으로 tp를 이전해야 합니다.
잘못된 가격으로 수정하지 않으려면 어떤 검사를 수행해야 합니까?
매도 포지션이 열렸고 , Selllimit가 활성화되었습니다. 현재 가격이 아닌 새 포지션 가격을 기준으로 tp를 이전해야 합니다.
잘못된 가격으로 수정하지 않으려면 어떤 검사를 수행해야 합니까?
시험:
if (m_position.PriceOpen()-ExtTakeProfit<m_position.PriceCurrent() { m_trade.PositionModify(m_position.Ticket(), m_position.StopLoss(), m_symbol.NormalizePrice(m_position.PriceOpen()-ExtTakeProfit) ); ...
시험:
감사하지만 오류가 남아 있습니다.
현재 가격에 수용할 수 없을 정도로 가까울 수 있습니다. 그것을 확인하는 방법?
감사하지만 오류가 남아 있습니다.
현재 가격에 수용할 수 없을 정도로 가까울 수 있습니다. 그것을 확인하는 방법?
나는 거래소에 접근할 수 없기 때문에 직접 하거나 외환 도구로 작업하십시오. 죄송합니다.
추가됨: 한 번 더 확인 입력 - 매도 포지션의 경우 새로운 TakeProfit(계산된 값)은 포지션의 현재 TakeProfit보다 높거나 같아야 합니다.
나는 거래소에 접근할 수 없기 때문에 직접 하거나 외환 도구로 작업하십시오. 죄송합니다.
추가됨: 한 번 더 확인 입력 - 매도 포지션의 경우 새로운 TakeProfit(계산된 값)은 포지션의 현재 TakeProfit보다 높거나 같아야 합니다.
아마 시가 ( POSITON_PRICE_OPEN ) ?
아마 시가 ( POSITON_PRICE_OPEN ) ?
이 옵션이 더 높았습니다. 위의 게시물을 참조하십시오. 당신은 대화 중에 대답했습니다.
적합하지 않음, ATR에 의해 수정됨 이 오류에 대해 어떤 다른 검사를 수행할 수 있습니까? 모두 가능합니다. MT4에는 STOPLEVEL이 있지만 여기에는 무엇이 있습니까?