각 통화 쌍에 대한 EA - 통화 쌍당 한 번만 열리는 코드는 무엇입니까? - 페이지 4

 
onewithzachy :
당신은 완전히 틀렸습니다. 귀하의 코드는 실행되지 않습니다 !!!. RaptorUK를 사용하십시오.

괜찮아 :)

나는 단순히 이것으로 혼란스러워했습니다.

"j = 0일 때 완료"

감사해요!

 
grey.unit :

따라서 다음과 같이 표시되어야 합니다.

당신이 이것을 썼기 때문에:

아니면 내가 틀렸어?

당신은 잘못 . . . 이것을 보십시오 :

내 코드 식에서 2는 j >= 0 을 의미합니다. . . while ( j >= 0 ) 그래서 j가 0 이상인 동안 루프가 실행됩니다. 즉, OrdersTotal() - 1 에서 0 까지

j = 0 을 사용하는 경우(j == 0으로 작성해야 할 수도 있음) 이는 while(j == 0)을 의미하고 루프는 j가 0 일 때만 실행됩니다.

 
아 알았어 이제 이해했어
 
RaptorUK :

아니요, 이렇게 하세요. . .

첫 번째 주문 위치는 0이므로 5개의 주문이 있는 경우 위치는 0, 1, 2, 3, 4입니다. . . 그래서 마지막은 OrdersTotal() - 1 입니다. . . 카운트다운을 하려면 OrdersTotal()-1에서 시작하여 0에서 끝납니다.

이것은 OrdersTotal() -1이 No Orders이고, 0은 1차 주문, 1은 2개 주문 등 5개 주문과 동일한 4개를 의미합니까?

내 이해가 -1이 No order와 같다면 누군가가 알려줄까요? 이것이 맞습니까?

감사해요

 
barnacle7 :

이것은 OrdersTotal() -1이 No Orders이고, 0은 1차 주문, 1은 2개 주문 등 5개 주문과 동일한 4개를 의미합니까?

OrdersTotal()은 열린 주문의 수입니다. 예, 총 5개가 있는 경우 0에서 4까지 번호가 매겨집니다.
 

저도 같은 문제로 도움이 필요합니다. 저는 초보 코더이고 여기에서 본 코드를 입력하려고 했지만 전혀 작동하지 않습니다. 도와주세요. Orderselect가 사용되었습니다.

OrdersTotal을 대체 하고 각 EA가 수행하는 거래 수를 제어하지만 이제 다른 EA는 거래를 하지 않습니다.

 void OnTick ()

{
       double movingAverageSS = iMA ( NULL , 60 ,LowerMAS, 0 , MODE_SMA , PRICE_CLOSE , 0 );    
       double lastmovingAverageSS = iMA ( NULL , 60 ,LowerMAS, 0 , MODE_SMA , PRICE_CLOSE , 1 );     
       double movingAverageSB = iMA ( NULL , 60 ,LowerMAB, 0 , MODE_SMA , PRICE_CLOSE , 0 );       
       double lastmovingAverageSB = iMA ( NULL , 60 ,LowerMAB, 0 , MODE_SMA , PRICE_CLOSE , 1 );          
       double movingAverageFS = iMA ( NULL , 60 ,UpperMAS, 0 , MODE_SMA , PRICE_CLOSE , 0 );    
       double lastmovingAverageFS = iMA ( NULL , 60 ,UpperMAS, 0 , MODE_SMA , PRICE_CLOSE , 1 );   
       double movingAverageFB = iMA ( NULL , 60 ,UpperMAB, 0 , MODE_SMA , PRICE_CLOSE , 0 );    
       double lastmovingAverageFB = iMA ( NULL , 60 ,UpperMAB, 0 , MODE_SMA , PRICE_CLOSE , 1 );    
       int b; int bM; int s; int sM;    
       bool res = ( OrderSelect (b,SELECT_BY_POS));    
       bool resM = ( OrderSelect (bM,SELECT_BY_POS));    
       bool ses = ( OrderSelect (s,SELECT_BY_POS));    
       bool sesM = ( OrderSelect (sM,SELECT_BY_POS));    
       
       if ((lastmovingAverageFB<lastmovingAverageSB) && (movingAverageFB > movingAverageSB) && res == false   && resM == false )      
         {
         b = OrderSend ( Symbol (),OP_BUY,lotSize,Ask, 4 ,Ask - SLPB* _Point , Ask + TPB1* _Point , NULL , 1 , 0 ,Green);       
         bM = OrderSend ( Symbol (),OP_BUY,lotSize,Ask, 4 ,Ask - SLPB* _Point , Ask + TPB2* _Point , NULL , 2 , 0 ,Green);       
         }       
         else if ((lastmovingAverageFS>lastmovingAverageSS)&&(movingAverageFS<movingAverageSS) && ses == false && sesM == false )     
         {  
         s = OrderSend ( Symbol (),OP_SELL,lotSize,Bid, 4 ,Ask + SLPS* _Point ,Ask - TPS1* _Point , NULL , 3 , 0 ,Red);       
        sM = OrderSend ( Symbol (),OP_SELL,lotSize,Bid, 4 ,Ask + SLPS* _Point ,Ask - TPS2* _Point , NULL , 4 , 0 ,Red);   
}


 
&& res == false

Orderselect는 주문을 선택한 경우 true를 반환합니다.

기호 이름과 함께 매직 넘버를 사용할 수도 있습니다.

다음은 연구할 수 있는 기사의 예입니다. https://www.mql5.com/en/articles/1359

MagicNumber: "Magic" Identifier of the Order
MagicNumber: "Magic" Identifier of the Order
  • www.mql5.com
In МТ3, management of open positions was rather time-taking. Traders had at their disposal a rather limited tool set to work with the list of open and closed positions. The problem of distinguishing between "own" and "someone else's" positions was solved in rather complicated ways. In МТ4, the situation has cardinally changed. Now, trader can...
 
  1.        int b; int bM; int s; int sM;    
           bool res = ( OrderSelect (b,SELECT_BY_POS));    
           bool resM = ( OrderSelect (bM,SELECT_BY_POS));    
           bool ses = ( OrderSelect (s,SELECT_BY_POS));    
           bool sesM = ( OrderSelect (sM,SELECT_BY_POS));    

    b 값이 없으면 OrderSelect가 실패합니다. bM 값이 없으면 OrderSelect가 실패합니다. s 값이 없으면 OrderSelect가 실패합니다. sM 값이 없으면 OrderSelect가 실패합니다.

  2. 여러 주문을 선택하는 요점이 무엇입니까? 결과는 마지막으로 성공한 선택입니다.

  3.          b = OrderSend ( Symbol (),OP_BUY,lotSize,Ask, 4 , Ask - SLPB* _Point , Ask + TPB1* _Point , NULL , 1 , 0 ,Green);       
             bM = OrderSend ( Symbol (),OP_BUY,lotSize,Ask, 4 ,Ask - SLPB* _Point , Ask + TPB2* _Point , NULL , 2 , 0 ,Green);       
    
    b와 bM은 지역 변수입니다. 돌아올 때 티켓 번호는 사라집니다.

  4. 왜 직급으로 선택하려고 하는데 티켓번호는 저장하려고 하시나요? 유효한 티켓 번호로 선택하면 주문이 열려 있음을 의미하지 않습니다.

  5. 당신 은 매도호가에서 매수하고 매도호가에서 매도 합니다.

    1. Bid / OrderClosePrice 에 도달하면 구매 주문의 TP/SL(또는 Sell Stop's/Sell Limit's entry)이 트리거됩니다. Ask ± n 사용하면 스프레드에 의해 SL이 짧아지고 TP가 길어집니다. 지정된 양을 양방향으로 사용하고 싶지 않습니까?

    2. 매도 주문의 TP/SL(또는 매수 스톱/매도 제한 항목)은 Ask / OrderClosePrice 가 도달하면 트리거됩니다. 특정 입찰 가격에서 트리거하려면 평균 스프레드를 추가합니다.
      MODE_SPREAD(Paul) - MQL4 프로그래밍 포럼 - 페이지 3 #25

    3. 차트에는 입찰가 만 표시됩니다. 스프레드가 얼마나 큰지 보려면 Ask 라인을 켜십시오( Tools → Options (control+O) → 차트 → Show Ask line .)
      변동 스프레드가 있는 대부분의 중개인은 하루(오후 5시 ET) ± 30분에 상당히 넓어집니다. 내 GBPJPY(OANDA)는 평균 스프레드 = 26포인트를 보여주지만 평균 최대 스프레드 = 134를 보여줍니다.