반대 순서 열기

 

안녕하세요 여러분,

이 문제를 해결하는 데 도움을 받고 싶습니다.

주문이 열려 있고 가격이 주문 시가보다 낮을 때 반대 주문을 열고 싶습니다.

이 특별한 경우에는 이 코드를 사용하려고 하지만 성공하지 못했습니다. 누구든지 여기에 도움을 줄 수 있습니까?

미리 감사드립니다

루이스

 double OpenOppositeOrder() 
 {
   int Op;  
 // for(int Counter=0;Counter<=OrdersTotal()-1;Counter++)
   for ( int Counter= OrdersTotal ()- 1 ;Counter>= 0 ;Counter--)
  {
   OrderSelect (Counter,SELECT_BY_POS,MODE_TRADES);
   {
     if (OrderSymbol()== Symbol ()&& OrderMagicNumber()==MagicNumber)
    {
     Op=OrderType();
     if (Op==OP_BUY && NormalizeDouble (Bid, Digits )*UsePoint<OpenPrice)
     {      
     SellTicket = OrderSend ( Symbol (),OP_SELL,LotSize, NormalizeDouble (Bid, Digits ),UseSlippage, 0 , 0 , "Sell Order" ,MagicNumber, 0 ,Red);
     if (SellTicket> 0 )AddLimitsSell();
      }
     if (Op==OP_SELL && NormalizeDouble (Ask, Digits )*UsePoint>OpenPrice)
     {      
     BuyTicket = OrderSend ( Symbol (),OP_BUY,LotSize, NormalizeDouble (Ask, Digits ),UseSlippage, 0 , 0 , "Buy Order" ,MagicNumber, 0 ,Green);
     if (BuyTicket> 0 )AddLimitsBuy();
      }
     }
    }
   }
  }
 
luisneves :

안녕하세요 여러분,

이 문제를 해결하는 데 도움을 받고 싶습니다.

주문이 열려 있고 가격이 주문 시가보다 낮을 때 반대 주문을 열고 싶습니다.

이 특별한 경우에는 이 코드를 사용하려고 하지만 성공하지 못했습니다. 누구든지 여기에 도움을 줄 수 있습니까?

미리 감사드립니다

루이스

이 질문에 답해 주시면 많은 도움이 될 것입니다.

1. OrderSelect()의 반환 값은 무엇입니까 - OrderSelect 문서를 읽으면 이에 대한 답을 얻을 수 있습니다.

2. 주문을 보내지 못했을 때 어떤 오류가 발생합니까?

 
luisneves :

안녕하세요 여러분,

이 문제를 해결하는 데 도움을 받고 싶습니다.

주문이 열려 있고 가격이 주문 시가보다 낮을 때 반대 주문을 열고 싶습니다.

이 특별한 경우에는 이 코드를 사용하려고 하지만 성공하지 못했습니다. 누구든지 여기에 도움을 줄 수 있습니까?

UsePoint 라는 변수의 목적은 무엇입니까? 당신이 그것을 사용하는 이유를 설명할 수 있다면 아마도 당신의 문제가 무엇인지 이해할 것입니다. . . 또한 . . . OpenPrice 의 가치는 어디에서 왔습니까?


OrderSend()가 작동하는지 여부를 알고 싶지 않습니까? 그리고 그것이 실패한다면 그 이유를 알고 싶지 않습니까? 실패했을 때 관련 변수가 무엇인지 알고 싶지 않습니까?

읽어보기: 함수 반환 값이란 무엇입니까? 어떻게 사용합니까?

 

안녕하세요 RaptorUK;

귀하의 신속한 응답에 감사드립니다.

UsePoint 는 소수점 5자리를 조정하는 것이므로 Point*10도 마찬가지입니다.

OpenPrice 는 OrderOpenPrice()입니다.

고맙습니다

루이스

 
luisneves :

안녕하세요 RaptorUK;

귀하의 신속한 응답에 감사드립니다.

UsePoint 는 소수점 5자리를 조정하는 것이므로 Point*10도 마찬가지입니다.

이 상황에서 왜 그것을 사용하는지 설명할 수 있습니까?

 

안녕하세요 RaptorUK입니다.

당신이 맞습니다. TakeProfit 및 Stoploss에 사용해야 합니다(제 생각에는...)

 
luisneves :

안녕하세요 RaptorUK입니다.

당신이 맞습니다. TakeProfit 및 Stoploss에 사용해야 합니다(제 생각에는...)

답변해주시고 고민해주셔서 감사합니다 :-)
 

안녕하세요 RaptorUK입니다.

나는 당신이 제공한 링크를 살펴보고 오류 루틴을 코드에 넣었고 방금 반환된 오류는 2012.11.06 06:40 시장 주문 ecn v1 EURUSDi,M5: 주문 보내기 실패, 오류 # 4051을 말합니다.

그런 다음 코드에서 OrderSelect 및 사용 티켓을 약간 변경했지만 여전히 작동하지 않습니다. 또한 의미를 검색했는데 찾은 것은 ERR_INVALID_FUNCTION_PARAMVALUE(4051)이고 불행히도 모르겠습니다.

여기서 어떻게...

 double OpenOppositeOrder() 
 {
   int Op;  
 // for(int Counter=0;Counter<=OrdersTotal()-1;Counter++)
   for ( int Counter= OrdersTotal ()- 1 ;Counter>= 0 ;Counter--)
  {
   //OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES);
   OrderSelect (Ticket,SELECT_BY_TICKET);
   {
     if (OrderSymbol()== Symbol ()&& OrderMagicNumber()==MagicNumber)
    {
     Op=OrderType();
     if (Op==OP_BUY && NormalizeDouble (Bid, Digits )<OpenPrice)
     {      
     Ticket = OrderSend ( Symbol (),OP_SELL,LotSize, NormalizeDouble (Bid, Digits ),UseSlippage, 0 , 0 , "Sell Order" ,MagicNumber, 0 ,Red);
     if (Ticket> 0 )AddLimitsSell();
      } 
       if ( Ticket > 0 )
   {
   Print ( "Order placed # " , Ticket);
   }
else
   {
   Print ( "Order Send failed, error # " , GetLastError () );
   }
     if (Op==OP_SELL && NormalizeDouble (Ask, Digits )>OpenPrice)
     {      
     Ticket = OrderSend ( Symbol (),OP_BUY,LotSize, NormalizeDouble (Ask, Digits ),UseSlippage, 0 , 0 , "Buy Order" ,MagicNumber, 0 ,Green);
     if (Ticket> 0 )AddLimitsBuy();
      }
       if ( Ticket > 0 )
   {
   Print ( "Order placed # " , Ticket);
   }
else
   {
   Print ( "Order Send failed, error # " , GetLastError () );
   }
      
      
     }
    }
   }
  }


 
luisneves :

안녕하세요 RaptorUK입니다.

나는 당신이 제공한 링크를 살펴보고 오류 루틴을 코드에 넣었고 방금 반환된 오류는 2012.11.06 06:40 시장 주문 ecn v1 EURUSDi,M5: 주문 보내기 실패, 오류 # 4051을 말합니다.

그런 다음 코드에서 OrderSelect 및 사용 티켓을 약간 변경했지만 여전히 작동하지 않습니다. 또한 의미를 검색했는데 찾은 것은 ERR_INVALID_FUNCTION_PARAMVALUE(4051)이고 불행히도 모르겠습니다.

여기서 어떻게...

OrderSend() 함수 에 보내는 값을 확인해야 합니다. . . 그들은 올바른 유형입니까? 예를 들어 UseSlippageint 여야 하며 bool처럼 들립니다. . . LotSize두 배 입니까? 올바른 범위에 있습니까? Min Lot보다 크고 Max Lot보다 작으며 Lot Step의 배수?
 
RaptorUK :
OrderSend() 함수에 보내는 값을 확인해야 합니다. . . 그들은 올바른 유형입니까? 예를 들어 UseSlippageint 여야 하며 bool처럼 들립니다. . . LotSize두 배 입니까? 올바른 범위에 있습니까? Min Lot보다 크고 Max Lot보다 작으며 Lot Step의 배수?


안녕하세요 RaptorUK입니다.

시간을 내서 죄송합니다. 아마도 당신은 나에게 질리기 시작할 것입니다. 그래서 Slippage는 int이고 LotSize는 double입니다....그리고 상황은 여전히 나쁩니다.

정말 아직도 이해하려고 애쓰지만 제 무지가 악용되고 있는 것 같습니다(...)

때때로 테스터에 문제가 있을 수 있으며 데모에서 시도해 봅니다. 그리고 가격이 OrderOpenPrice(구매의 경우) 미만인 경우 반대 주문을 열 수 없습니다.

첨부된 코드를 확인해 주시겠습니까?

나는 당신이 나를 위해 코딩하는 것이 아니라 약간의 도움을 원합니다.

제공된 도움과 인내심에 미리 감사드립니다.

루이스

파일:
 
luisneves :


안녕하세요 RaptorUK입니다.

시간을 내서 죄송합니다. 아마도 당신은 나에게 질리기 시작할 것입니다. 그래서 Slippage는 int이고 LotSize는 double입니다....그리고 상황은 여전히 나쁩니다.

정말 아직도 이해하려고 애쓰지만 제 무지가 악용되고 있는 것 같습니다(...)

때때로 테스터에 문제가 있을 수 있으며 데모에서 시도해 봅니다. 그리고 가격이 OrderOpenPrice(구매의 경우) 미만인 경우 반대 주문을 열 수 없습니다.

첨부된 코드를 확인해 주시겠습니까?

나는 당신이 나를 위해 코딩하는 것이 아니라 약간의 도움을 원합니다.

제공된 도움과 인내심에 미리 감사드립니다.

올바른 코드를 잘못된 코드로 변경한 이유는 무엇입니까?

You Loop는 거래 풀(Open and Pending Orders )에 있는 모든 주문을 반복하고 있었습니다. . . 이제 이 코드는 의미가 없습니다. 루프의 첫 번째 패스에서 티켓이 어디에서 옵니까?

 for ( int Counter= OrdersTotal ()- 1 ; Counter>= 0 ; Counter--)
  {
   //OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES);
   OrderSelect ( Ticket ,  SELECT_BY_TICKET);


또 다른 질문입니다. . . . 아무 것도 반환하지 않을 때 이 함수 유형이 이중 인 이유는 무엇입니까?