ModifyOrder 기능은 미리 선택된 하나의 주문에 대해 하나 이상의 가격 수준을 변경하도록 설계되었습니다. 여기서 주문은 보류 중인 지정가 또는 지정가 주문과 매수 또는 매도 시장 주문, 즉 포지션을 모두 의미합니다. 위치의 경우 ModifyOrder 기능을 사용하여 StopLoss 및 TakeProfit 의 두 가지 가격 수준을 변경할 수 있으며, 보류 중인 주문의 경우 이에 추가하여 OpenPrice 설정 가격도 변경할 수 있습니다. 변경된 가격 수준은 매개변수로 ModifyOrder 함수에 전달됩니다. 매개변수가 음수이면 해당 가격 수준은 변경되지 않습니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Модификация одного предварительно выбранного ордера. |//+----------------------------------------------------------------------------+//| Параметры: |//| pp - цена установки ордера |//| sl - ценовой уровень стопа |//| tp - ценовой уровень тейка |//| cl - цвет значка модификации |//+----------------------------------------------------------------------------+voidModifyOrder(doublepp=-1, doublesl=0, doubletp=0, colorcl=CLR_NONE){boolfm;
doubleop, pa, pb, os, ot;
intdg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
if(pp<=0)pp=OrderOpenPrice();
if(sl<0)sl=OrderStopLoss();
if(tp<0)tp=OrderTakeProfit();
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice() , dg);
os=NormalizeDouble(OrderStopLoss() , dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);
if(pp!=op || sl!=os || tp!=ot){for(it=1; it<=NumberOfTry; it++){if(!IsTesting() && (!IsExpertEnabled() || IsStopped()))break;
while(!IsTradeAllowed())Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, 0, cl);
if(fm){if(UseSound)PlaySound(NameFileSound); break;
}else{er=GetLastError();
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
" op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp);
Sleep(1000*10);
}}}}
가장 먼저 나는 이미 반복적으로 질문을 받은 예를 제시하기로 결정했습니다. 이것은 시장 주문 Market Watch 의 시장 실행 조건에서 포지션을 여는 것입니다. 이는 시장 가격으로 포지션을 오픈하는 주문을 하는 동시에 보류 중인 주문을 첨부하는 것이 불가능한 경우입니다. Market Watch 조건에서 이러한 개시는 두 단계로 수행되어야 합니다. 먼저 포지션을 개설한 다음 보류 중인 주문을 첨부합니다. 즉, StopLoss 및 TakeProfit 가격 수준을 설정합니다.
글쎄, 질문이 없기 때문에 계속하자 ...
ModifyOrder() 함수.
ModifyOrder 기능은 미리 선택된 하나의 주문에 대해 하나 이상의 가격 수준을 변경하도록 설계되었습니다. 여기서 주문은 보류 중인 지정가 또는 지정가 주문과 매수 또는 매도 시장 주문, 즉 포지션을 모두 의미합니다. 위치의 경우 ModifyOrder 기능을 사용하여 StopLoss 및 TakeProfit 의 두 가지 가격 수준을 변경할 수 있으며, 보류 중인 주문의 경우 이에 추가하여 OpenPrice 설정 가격도 변경할 수 있습니다. 변경된 가격 수준은 매개변수로 ModifyOrder 함수에 전달됩니다. 매개변수가 음수이면 해당 가격 수준은 변경되지 않습니다.
ModifyOrder() 함수 사용의 예.
가장 먼저 나는 이미 반복적으로 질문을 받은 예를 제시하기로 결정했습니다. 이것은 시장 주문 Market Watch 의 시장 실행 조건에서 포지션을 여는 것입니다. 이는 시장 가격으로 포지션을 오픈하는 주문을 하는 동시에 보류 중인 주문을 첨부하는 것이 불가능한 경우입니다. Market Watch 조건에서 이러한 개시는 두 단계로 수행되어야 합니다. 먼저 포지션을 개설한 다음 보류 중인 주문을 첨부합니다. 즉, StopLoss 및 TakeProfit 가격 수준을 설정합니다.
1. 현재 상품의 0.1랏을 매수하고 30포인트의 손절매를 설정합니다.
2. 현재 상품의 0.15랏을 매도하고 SL=45, TP=99로 설정합니다.
예고편에서 예제가 있는 작업 스크립트.Igor, 주문 마감 기능이 있습니까(Close 및 CloseBy 둘 다)?
알파벳순으로 닫기는 ModifyOrder 함수 전에 있어야 합니다 ;-)
논리... ;)
뻔뻔함을 "기능 전환"이라는 주제에 대한 작은, 하나의 게시물, 교육 프로그램으로 간주하지 않습니까?
지금까지 나에게 이것은 어두운 논리적 이념의 숲입니다 ...
(하지만 아니, 아니...)
뻔뻔함을 "기능 전환"이라는 주제에 대한 작은, 하나의 게시물, 교육 프로그램으로 간주하지 않습니까?
감사해요...
그리고 물론 서두르지 않습니다 ... 서두를 곳이 없습니다.
시장은 우리에게서 도망치지 않을 것입니다 ... :)))
감사해요...
그리고 물론 서두르지 않습니다 ... 서두를 곳이 없습니다.
시장은 우리에게서 도망치지 않을 것입니다 ... :)))