포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 911

 
Viktorline14 :
얘들아 제발 도와줘!!!

상담원의 글을 복사해서 붙여넣기 하는 것보다 스크린샷을 찍어 여기에 올리는 것이 정말 쉽습니까? 누군가가 화면에서 ME에 수동으로 입력하고 이해하기 시작할 것이라고 생각하십니까?

컴파일러가 함수 실행 결과를 확인하는 것이 필요하다고 쓴다면, 그것은 반드시 확인해야 한다는 의미입니다. 어렵지 않습니다:

if(! OrderSend ( Symbol (), OP_BUY, OrderValue, NormalizeDouble (Ask, Digits ), 3 , SL, TP, NULL , 0 , 0 , clrBlue )) Print("Opening Buy error #", GetLastError()); //ну и другие действия по усмотрению, в случае ошибки
 

 if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 {OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, SL, TP, NULL, 0, 0,clrBlue);

     MyOrderStateB = 1; 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue)) 

   Print("Opening Buy error #", GetLastError());}

   else Sleep(2);

고맙습니다. 그러나 그것이 맞습니까? 그렇지 않습니까? 여전히 경고를 준다

 
당신은 손절매가 있고 절대 가치에서 이익을 얻습니다. 그러나 Bid - Sl*Point와 같은 상대적 가치입니다.
 
abeiks :

안녕하세요!

내 전문가는 이전 양초 에서 양초를 열 수 있는지 확인합니다. 조건이 허용되면 위치가 열리고 그렇지 않으면 열리지 않습니다. 문제는 이전 캔들의 상태를 확인하기 전에 포지션을 오픈했다는 점이다. 로그에서 나는 포지션의 시작을 보고 그 포지션을 열어서는 안된다는 것이 밝혀졌습니다. 이 문제를 어떻게 해결할 것인가?

고마워, 나는 그것을 알아 냈습니다. 나는 포지션을 여는 기능 위에 이전 캔들을 확인하는 기능을 넣었다.
 
거칠어 죄송합니다
 
if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )
{OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble (Ask, Digits), Slippage, Bid - SL * Point, Ask + TP * Point, NULL, 0, 0,clrBlue);
MyOrderStateB = 1;
if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue))
Print("구매 열기 오류 #", GetLastError());}
그렇지 않으면 수면(2);

if(S1a == S1b && S1a>80.0000 && S1b>80.0000 )

{OrderSend(Symbol(), OP_SELL, OrderValue, NormalizeDouble(Bid, Digits), Slippage, Ask + SL * Point, Bid - TP * Point, NULL, 0, 0,clrRed);
MyOrderStateS = 1; }

그렇지 않으면 수면(2);

그리고 상대적으로 그것은 같은 것을 제공합니다 (

 
Viktorline14 :

 if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 {OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, SL, TP, NULL, 0, 0,clrBlue);

     MyOrderStateB = 1; 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue)) 

   Print("Opening Buy error #", GetLastError());}

   else Sleep(2);

고맙습니다. 그러나 그것이 맞습니까? 그렇지 않습니까? 여전히 경고를 준다

틀렸습니다. OrderSend를 두 번 호출할 필요가 없습니다. 예, TP가 있는 SL은 가격과 관련하여 고려되어야 하며 포인트로 설정되지 않아야 합니다. 그리고 매도호가와 매수호가 시가가 아닌 SL과 TP를 계산한 결과를 정상화할 필요가 있다.

일반적으로 "공부하고, 공부하고, 다시 공부하십시오")))

 
evillive :

틀렸습니다. OrderSend를 두 번 호출할 필요가 없습니다. 예, TP가 있는 SL은 가격과 관련하여 고려되어야 하며 포인트로 설정되지 않아야 합니다. 그리고 매도호가와 매수호가의 시가가 아닌 SL과 TP를 계산한 결과를 정상화할 필요가 있다.

일반적으로 "공부하고, 공부하고, 다시 공부하십시오")))

대단히 감사합니다))) 당신은 저를 많이 도왔습니다, 이제 모든 것이 작동합니다: 3
 

다시 한번 감사합니다!

이제 한 가지 문제가 있습니다. 고문은 내가 원하는 대로 하나가 아니라 여러 주문을 연속으로 엽니다(

int start()



  { S1a = NormalizeDouble(iStochastic(NULL, 0, S1_period, 3, S1_slowing, MODE_SMA, 1, MODE_MAIN, 1), 0);

   S1b = NormalizeDouble(iStochastic(NULL, 0, S1_period, 3, S1_slowing, MODE_SMA, 1, MODE_SIGNAL, 1), 0);

   

   if(MyOrderStateB == 1)Sleep(300000);

    else MyOrderStateB = 0;

   if(MyOrderStateS == 1)Sleep(300000);

    else MyOrderStateS = 0;

    

 

     

   if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, Bid - SL * Point, Ask + TP * Point, NULL, 0, 0,clrBlue))

   Print("Opening Buy error #", GetLastError());  

     else Sleep(2);

   MyOrderStateB = 1;

  

   


      

   if(S1a == S1b && S1a>80.0000 && S1b>80.0000 )


    

    

       if(!OrderSend(Symbol(), OP_SELL, OrderValue, NormalizeDouble(Bid, Digits), Slippage, Ask + SL * Point, Bid - TP * Point , NULL, 0, 0,clrRed))

       Print("Opening Sell error #", GetLastError()); 

       else Sleep(2);

       MyOrderStateS = 1;

       

      

       

       

       

   return(0);}

 

나는 전략 테스터 의 이상한 행동을 관찰했다. 내 EA는 보류 중인 중지 주문을 설정하고 추적합니다. 실수. 다음이 발생합니다. EA는 현재 가격에서 30핍 거리에 Bystop 및 Sellstop을 설정합니다(Instrument - GbUsd. 4자리. 최소 허용 수준 = 3핍). 얼마 후, 그는 그들이 작동하지 않으면 시장 뒤에 그들을 끌어옵니다. 여기 내가 보는 것이 있습니다. 수정 성공, 수정 성공, 그리고 어느 시점에서 오류 # 1이 나타납니다. 즉, 모든 것이 정상이었고 고문이 동일한 조치를 취했는데 갑자기이 오류가 나타납니다. 가격은 모두 숫자로 정규화됩니다. 일반적으로 OrderModify() 함수의 입력에 제공되는 모든 값은 모두 정규화됩니다!

테스터에서 Expert Advisor가 그러한 행동을 하는 이유는 무엇입니까?