[아카이브!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 2. - 페이지 463

 

안녕하세요!

(주문을 마감한 후) 주문을 개시했다는 사실을 기억하도록 전문가에게 어떻게 가르칠 수 있는지 알려주십시오. 전역 부울은 괜찮지만 하나의 도구에만 해당됩니다. 하나의 터미널에 여러 도구가 있는 경우 변수가 변경되고 더 이상 원래대로 작동하지 않습니다.

 
demlin :

안녕하세요!

(주문을 마감한 후) 주문을 개시했다는 사실을 기억하도록 전문가에게 어떻게 가르칠 수 있는지 알려주십시오. 전역 부울은 괜찮지만 하나의 도구에만 해당됩니다. 하나의 터미널에 여러 도구가 있는 경우 변수가 변경되고 더 이상 원래대로 작동하지 않습니다.


이것은 각 도구에 고유한 전역 변수 가 있음을 의미합니다.))
 
tol64 :

즉, 각 도구에는 고유한 전역 변수가 있습니다.))
논리적입니다. 그렇다면 프로그램에서 이름을 생성하는 방법은 무엇입니까? 코드에 60개의 변수를 수동으로 망치는 것은 무언가를 찾는 것이 아닙니다)))
[Deleted]  

안녕하세요 여러분!

어려움을 겪고 있습니다... 전문가가 24시간 차트에 매달려 있습니다. 오늘 오후 EUR/USD에는 매도를 여는 조건이 있었습니다(이전 양초의 시가가 MA 위에 있었고 종가가 MA 아래), 그러나 주문이 열리지 않았습니다. 이제 테스터에서 이 섹션을 실행했습니다. 주문이 멋진 작은 것처럼 열렸습니다.

코드의 오류는 어디에 있습니까? 이해가되지 않습니다. 주문이 열리지 않은 경우 특별히 조건을 삽입했습니다. 10 번 열려고 시도했지만 분명히 도움이되지 않았습니다. 초보자를 도왔습니다 ...

 void CheckForOpensell()
  {
   double maopensell;
   int     ticketsell= 0 ;


//---- go trading only for first tiks of new bar
   if (Volume[ 0 ]> 1 ) return ;
//---- get Moving Average 
   maopensell= iMA ( NULL ,TF,MovingPeriod,MovingShift, MODE_SMA , PRICE_CLOSE , 0 );
//---- sell conditions
   if (Open[ 1 ]>maopensell && Close[ 1 ]<maopensell)
   for ( int it= 1 ; it<= 10 ; it++)
    {
       while (!IsTradeAllowed()) Sleep ( 5000 ); 
      RefreshRates();
      ticketsell= OrderSend ( Symbol (),OP_SELL,LotsOptimizedsell(),Bid, 3 , 0 , 0 , " MA Sell M" +TF,MAGICMA, 0 , Red );
       if (ticketsell> 0 )
         {
          OrderModify (ticketsell,OrderOpenPrice(),Bid+StopLoss* Point ,Bid-TakeProfit* Point , 0 , Gold );
           return ;  
         }
      
       else
       {
         int err= GetLastError ();
         if (err== 128 || err== 142 || err== 143 || err== 144 ) 
         {
           Sleep ( 2000 );
           Print ( "Error(" ,err, ") opening position: " ,ErrorDescription(err), ", try " ,it);
           continue ;
         }
         if (err== 146 ) while (IsTradeContextBusy()) Sleep ( 2000 );
         Print ( "Error(" ,err, ") opening position: " ,ErrorDescription(err), ", try " ,it);
         if (err== 2 || err== 64 || err== 65 || err== 4110 || err== 4111 ) break ;
         Sleep ( 2000 );
       }
      
     }
  }
 
Abylhat :

안녕하세요 여러분!

어려움을 겪고 있습니다... 전문가가 24시간 차트에 매달려 있습니다. 오늘 오후 EUR/USD에는 매도를 여는 조건이 있었습니다(이전 양초의 시가가 MA 위에 있었고 종가가 MA 아래), 그러나 주문이 열리지 않았습니다. 이제 테스터에서 이 섹션을 실행했습니다. 주문이 멋진 작은 것처럼 열렸습니다.

코드의 오류는 어디에 있습니까? 이해가되지 않습니다. 주문이 열리지 않은 경우 특별히 조건을 삽입했습니다. 10 번 열려고 시도했지만 분명히 도움이되지 않았습니다. 초보자를 도왔습니다 ...


이 부분에 문제가 있을 가능성이 매우 높습니다.

 if (Volume[ 0 ]> 1 ) return ;

이 조건의 신호는 건너뛸 수 있습니다. 그러나 테스터에서는 확실히 작동합니다.

테스터에서 건너뛰는 틱 없음

[Deleted]  
Vinin :


이 부분에 문제가 있을 가능성이 매우 높습니다.

이 조건의 신호는 건너뛸 수 있습니다. 그러나 테스터에서는 확실히 작동합니다.

테스터에서 건너뛰는 틱 없음


감사합니다만 조건을 다르게 설정하는 방법을 알려주시겠습니까?
 
Abylhat :

감사합니다만 조건을 다르게 설정하는 방법을 알려주시겠습니까?

 int start(){
   static int prevtime= 0 ;
   if (Time[ 0 ]==prevtime) return ( 0 );
   prevtime=Time[ 0 ];

//
   return ( 0 );
}
Time[0] 대신 TimeCurrent()를 사용할 수 있습니다.
 
demlin :

안녕하세요!

(주문을 마감한 후) 주문을 개시했다는 사실을 기억하도록 전문가에게 어떻게 가르칠 수 있는지 알려주십시오. 전역 부울은 괜찮지만 하나의 도구에만 해당됩니다. 하나의 터미널에 여러 도구가 있는 경우 변수가 변경되고 더 이상 원래대로 작동하지 않습니다.

Expert Advisor는 한 번에 여러 상품을 거래합니까?

하나만 거래할 경우 글로벌 변수 이름에 Expert Advisor의 Magic Number를 추가할 수 있습니다.

 
rlx :

Expert Advisor는 한 번에 여러 상품을 거래합니까?

하나만 거래할 경우 글로벌 변수 이름에 Expert Advisor의 Magic Number를 추가할 수 있습니다.

Expert Advisor는 동시에 여러 상품을 거래합니다.
[Deleted]  
Vinin :

Time[0] 대신 TimeCurrent()를 사용할 수 있습니다.

감사합니다 시도해보겠습니다....