1.03747 에서 0.10을 구매한 주문 [#2 1.03747에서 0.10AUDNZD.m 구매]
보류 중인 주문 (1.03748) 이 수락 되지 않는 이유는 무엇입니까? 1.03747에서 - 설정하고 1.03748에서 - 작은 값? (결국, SYMBOL_ASK 는 스프레드를 고려하고 오프셋 - 주문을 하기 위한 현재 가격으로부터의 오프셋은 포인트로 1만큼 증가합니다.)
그러나 offset= 100 인 경우: 주문 보류 BUY_STOP 가격 = 1.03847 – 이미 작동 중
Есть такой параметр stoplevel -- минимально необходимое расстояние от текущей цены до цены установки отложенного ордера -- для каждого инструмента своё значение и задаётся в торговых условиях
그러면 다음이 사실이 됩니다.
가격 =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)*포인트
하지만 "... 현재 가격에서"라고 썼다면 스프레드가 그것과 어떤 관련이 있습니까? 이는 SYMBOL_ASK에 포함됩니다(SYMBOL_ASK = 시가 + 스프레드).
네, 정말... 그런 브로커는 어디에서 찾을 수 있나요... 링크를 공유할 수 있습니까?
좋은 시간,
문제:
구매 보류 중인 주문을 넣을 수 없는 이유를 알려주세요.
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(오프셋)*포인트;
오프셋 = 1 에서 탈락 오류 :
0.10 AUDNZD.m에서 1.03748 [유효하지 않은 가격] , t 에서 구매 중지 실패 . 전자 . 작은 수준 가격 ( 에서 나의 것 경우 )
때, 그 바로 뒤에 "집행 명령"을 배치할 때
request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK)
모든 것이 잘 작동합니다(즉, 주문이 완료됨):
1.03747 에서 0.10을 구매한 주문 [#2 1.03747에서 0.10AUDNZD.m 구매]
보류 중인 주문 ( 1.03748 ) 이 수락 되지 않는 이유는 무엇입니까? 1.03747에서 - 설정하고 1.03748에서 - 작은 값? (결국 , SYMBOL_ASK 는 스프레드를 고려하고 오프셋 - 주문을 하기 위한 현재 가격으로부터의 오프셋은 포인트로 1만큼 증가합니다.)
그러나 offset= 100 인 경우: 주문 보류 BUY_STOP 가격 = 1.03847 – 이미 작동 중
고맙습니다.좋은 시간,
문제:
보류 중인 주문을 구매할 수 없는 이유를 알려주세요.
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(오프셋)*포인트;
오프셋 = 1 에서 탈락 오류 :
0.10 AUDNZD.m at 1.03748 [Invalid price] , 즉 낮은 가격 수준(내 경우)
그 직후에 설정할 때 "실행 명령"
request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK)
모든 것이 잘 작동합니다(즉, 주문이 완료됨):
1.03747 에서 0.10을 매수한 주문 [#2 1.03747에서 0.10AUDNZD.m 매수]
보류 중인 주문 ( 1.03748 ) 이 수락 되지 않는 이유는 무엇입니까? 1.03747에서 - 설정하고 1.03748에서 - 작은 값?
그러나 offset= 100 인 경우: 주문 보류 BUY_STOP 가격 = 1.03847 – 이미 작동 중
고맙습니다.당신은 당신 자신의 질문에 답했습니다.
현재 가격에서 보류 주문 가격까지의 최소 요구 거리와 같은 stoplevel 매개 변수가 있습니다. 각 상품에는 고유한 가치가 있으며 거래 조건에서 설정됩니다.
Вы же сами и ответили на свой вопрос.
Есть такой параметр stoplevel -- минимально необходимое расстояние от текущей цены до цены установки отложенного ордера -- для каждого инструмента своё значение и задаётся в торговых условиях
그러면 다음이 사실이 됩니다.
가격 =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)*포인트
하지만 "... 현재 가격에서"라고 썼다면 스프레드가 그것과 어떤 관련이 있습니까? 이는 SYMBOL_ASK에 포함됩니다(SYMBOL_ASK = 시가 + 스프레드).
나는 당신을 돕기 위해 예를 첨부했습니다 ...
물론, 예제가 도움이 되었습니다. 고맙습니다.
이제 그런 질문입니다.
로트를 늘릴 때 어느 시점에서 무료 자금이 거의 없으며 증가 된 로트로 열어야합니다.
즉, FreeMargin이 허용하는 최대 로트로 입력하십시오.
그러한 조건을 작성하는 방법 : 계산된 로트를 사용하여 포지션을 개설 할 자금이 충분하지 않은 경우 함수는 포지션을 여는 데 가능한 최대 로트를 반환해야 합니다.
{
double Lot=FirstLot;
if (DoublingCount<= 0 ) return Lot;
double MaxLot= SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX );
double MainLot= SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN );
if (Lot<MainLot)Lot=MainLot;
if (Lot>MaxLot)Lot=MaxLot;
double lt1=Lot;
HistorySelect ( 0 , TimeCurrent ());
if ( HistoryOrdersTotal ()== 0 ) return (Lot);
double cl= HistoryOrderGetDouble ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 1 ), ORDER_PRICE_OPEN );
double op= HistoryOrderGetDouble ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 2 ), ORDER_PRICE_OPEN );
long typeor= HistoryOrderGetInteger ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 2 ), ORDER_TYPE );
if (typeor== ORDER_TYPE_BUY )
{
if (op>cl)
{
if (ud<DoublingCount)
{
lt1= HistoryOrderGetDouble ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 2 ), ORDER_VOLUME_INITIAL )*_C_;
ud++;
}
else ud= 0 ;
}
else ud= 0 ;
}
if (typeor== ORDER_TYPE_SELL )
{
if (cl>op)
{
if (ud<DoublingCount)
{
lt1= HistoryOrderGetDouble ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 2 ), ORDER_VOLUME_INITIAL )*_C_;
ud++;
}
else ud= 0 ;
}
else ud= 0 ;
}
if (lt1>MaxLot)lt1=MaxLot;
lt1=LotCheck(lt1);
return (lt1);
}
//+------------------------------------------------------------------+}
물론, 예제가 도움이 되었습니다. 고맙습니다.
이제 그런 질문입니다.
로트를 늘릴 때 어느 시점에서 무료 자금이 거의 없으며 증가 된 로트로 열어야합니다.
즉, FreeMargin이 허용하는 최대 로트로 입력하십시오.
그러한 조건을 작성하는 방법 : 계산된 로트를 사용하여 포지션을 개설 할 자금이 충분하지 않은 경우 함수는 포지션을 여는 데 가능한 최대 로트를 반환해야 합니다.
double Mgn,Lot=0,BID,ASK;
BID=SymbolInfoDouble(_Symbol,SYMBOL_BID);
ASK=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
if ( OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 1 ,ASK,Mgn)== true )Lot= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/Mgn;
if(OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)==true)Lot= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/Mgn;
마리나, 아마 그럴까요?
두 가지 계산 옵션을 적용합니다. 하나는 SELL 시작용이고 다른 하나는 BUY 시작용입니다.
if ( OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 1 ,ASK,Mgn)== true )Lot= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/Mgn;
if(OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)==true)Lot= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/Mgn;
아니, 그렇지 않습니다.
최소 로트가 0.01이고 마진이 0.009만 열 수 있는 상황이 발생할 수 있기 때문에 가능한 최대 로트를 계산할 뿐만 아니라 최소 허용 로트에 대해 전체를 확인해야 합니다. 결코 수락되지 않을 요청이 있는 서버, 그러나 귀하를 위한 조치는 수락될 수 있음)
아니, 그렇지 않습니다.
최소 로트가 0.01이고 마진이 0.009만 열 수 있는 상황이 발생할 수 있기 때문에 가능한 최대 로트를 계산할 뿐만 아니라 최소 허용 로트에 대해 전체를 확인해야 합니다. 결코 수락되지 않을 요청이 있는 서버, 그러나 귀하를 위한 조치는 수락될 수 있음)
전체 코드를 작성해야 하듯이, 글쎄요, 동시에 살펴보겠습니다....?
이제 나는 항상 당신에게서 배우고 답이 가득 차도록 당신을 돌볼 것입니다.
나는 한 번 기술 감독으로 일했습니다. 걱정하지 마십시오. 모든 것이 괜찮을 것입니다!
함께 우리는 팀입니다!
물론, 예제가 도움이 되었습니다. 고맙습니다.
이제 그런 질문입니다.
로트를 늘릴 때 어느 시점에서 무료 자금이 거의 없으며 증가 된 로트로 열어야합니다.
즉, FreeMargin이 허용하는 최대 로트로 입력하십시오.
그러한 조건을 작성하는 방법 : 계산된 로트를 사용하여 포지션을 개설 할 자금이 충분하지 않은 경우 함수는 포지션을 여는 데 가능한 최대 로트를 반환해야 합니다.