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

 

여기에서 보류 중인 주문 을 하고 이전 막대의 종가를 기준으로 가격을 계산해야 합니다. BUYSTOP은 베팅하고 SELLSTOP은 오류 130을 반환합니다. 이 코드에 버그가 있습니까? 또는 다른 기능을 살펴보십시오.

무효 SetOrder() {

이중 ldStop=0, ldTake=0;
int spr=MarketInfo(Symbol(), MODE_SPREAD);
더블 PredBar=iClose(NULL,PERIOD_M5,1);
이중 pAsk=PredBar+(DistanceSet+spr)*포인트;
이중 pBid=PredBar-(DistanceSet+spr)*포인트;

if (!ExistOrder(1)) {
if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1);
}
if (!ExistOrder(2)) {
if (StopLoss!=0) ldStop=PredBar+(StopLoss*Point);
if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2);
}
}
 
Pomid :

여기에서 보류 중인 주문을 하고 이전 막대의 종가를 기준으로 가격을 계산해야 합니다. BUYSTOP은 베팅하고 SELLSTOP은 오류 130을 반환합니다. 이 코드에 버그가 있습니까? 또는 다른 기능을 살펴보십시오.

 void SetOrders() {

   double ldStop= 0 , ldTake= 0 ;
   int     spr=MarketInfo( Symbol (), MODE_SPREAD);
   double PredBar=iClose( NULL , PERIOD_M5 , 1 );
   double pAsk=PredBar+(DistanceSet+spr)* Point ;
   double pBid=PredBar-(DistanceSet+spr)* Point ;

   if (!ExistOrder( 1 )) {
     if (StopLoss!= 0 ) ldStop=pAsk-StopLoss* Point ;
     if (TakeProfit!= 0 ) ldTake=pAsk+TakeProfit* Point ;
    SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1 );
  }
   if (!ExistOrder( 2 )) {
     if (StopLoss!= 0 ) ldStop=PredBar+(StopLoss* Point );
     if (TakeProfit!= 0 ) ldTake=pBid-TakeProfit* Point ;
    SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2 );
  }
}

저자에게 연락하지 않는 이유는 무엇입니까? 그는 아직 늙지 않고 젊습니다! 각 기능 위의 코드에서 좌표! 모두가 그를 알고 존경합니다!

그리고 SRC를 사용하여 이와 같은 코드를 붙여넣는 방법을 배우십시오!

 void SetOrders() {

   double ldStop= 0 , ldTake= 0 ;
   int     spr=MarketInfo( Symbol (), MODE_SPREAD);
   double PredBar=iClose( NULL , PERIOD_M5 , 1 );
   double pAsk=PredBar+(DistanceSet+spr)* Point ;
   double pBid=PredBar-(DistanceSet+spr)* Point ;

   if (!ExistOrder( 1 )) {
     if (StopLoss!= 0 ) ldStop=pAsk-StopLoss* Point ;
     if (TakeProfit!= 0 ) ldTake=pAsk+TakeProfit* Point ;
    SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1 );
  }
   if (!ExistOrder( 2 )) {
     if (StopLoss!= 0 ) ldStop=PredBar+(StopLoss* Point );
     if (TakeProfit!= 0 ) ldTake=pBid-TakeProfit* Point ;
    SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2 );
  }
}

그들은 이해하지 못한 채 PredBar를 가지고 놀았고, 결과는 다음과 같습니다! 첫 매트. 부분을 가르쳐!

 
좋은 저녁이에요! 새 빌드에서 표시기가 작동하지 않는 문제를 해결하는 방법을 알려주십시오. 컴파일할 때 'TotalOrders' 오류가 발생합니다 - 잘못된 스위치 표현식 유형 ( 오류는 코드에서 강조 표시됨 ) . 진심으로, 알렉산더.
 for (i= 0 ; i<k; i++)
   {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) 
    {
       if ((OrderSymbol()==Symb) && (OrderType()==op))
        {
            ko++;
            TotalOrders[ChartListPosition+ 1 ][ko][ 1 ]= NormalizeDouble (OrderOpenPrice(),dig);
            TotalOrders[ChartListPosition+ 1 ][ko][ 2 ]= NormalizeDouble (OrderStopLoss(),dig);
            TotalOrders[ChartListPosition+ 1 ][ko][ 3 ]= NormalizeDouble (OrderTakeProfit(),dig);
            TotalOrders[ChartListPosition+ 1 ][ko][ 4 ]=OrderTicket();
            TotalOrders[ChartListPosition+ 1 ][ko][ 5 ]=OrderLots();
            TotalOrders[ChartListPosition+ 1 ][ko][ 6 ]=OrderType();
            TotalOrders[ChartListPosition+ 1 ][ko][ 7 ]=OrderMagicNumber();
            TotalOrders[ChartListPosition+ 1 ][ 0 ][ 0 ]=ko;
           
               switch ( TotalOrders [ChartListPosition+ 1 ][ko][ 6 ])
              {
               case OP_BUY:
                        Type= "Buy" ;
                 break ;
                
               case OP_BUYSTOP:
                        Type= "Buy Stop" ;

 for ( int j= 1 ;j<=OrdersCount;j++)  
      {
       
         switch ( TotalOrders [ChartsListPosition+ 1 ][j][ 6 ])
          {
           case OP_SELL: 
               if (TotalOrders[ChartsListPosition+ 1 ][j][ 2 ]!= 0 && 
                   ask>=(TotalOrders[ChartsListPosition+ 1 ][j][ 2 ]- NormalizeDouble (StopLevel*point,dig)))  
                   {
                    test=StopLossColor;
                   } 
                   else
                   {
                   if (TotalOrders[ChartsListPosition+ 1 ][j][ 3 ]!= 0 && 
                       ask<=(TotalOrders[ChartsListPosition+ 1 ][j][ 3 ]+ NormalizeDouble (StopLevel*point,dig)))
                      {
                       test=TakeProfitColor;
                      }
                   }
             break ;       
 
karwin :
좋은 저녁이에요! 새 빌드에서 표시기가 작동하지 않는 문제를 해결하는 방법을 알려주십시오. 컴파일할 때 'TotalOrders' 오류가 발생합니다 - 잘못된 스위치 표현식 유형 (오류는 코드에서 강조 표시됨) . 진심으로, 알렉산더.

변수는 다른 것이 아니라 거기에 있어야 합니다.

               int Переменная=TotalOrders[ChartListPosition+ 1 ][ko][ 6 ];
               switch (Переменная)
              {
               case OP_BUY:
                        Type= "Buy" ;
                 break ;
                
               case OP_BUYSTOP:
                        Type= "Buy Stop" ;
 

안녕 동지들.

말해봐, 나는 MT5에 익숙하지 않고 거의 사용하지 않았으며 테스트에는 하나의 프로세서 코어만 사용되었으며 그 중 8개가 있습니다. 그 이유는 무엇입니까? 그것을 고치는 방법?


 
7Konstantin7 :

안녕 동지들.

말해봐, 나는 MT5에 익숙하지 않고 거의 사용하지 않았으며 테스트에는 하나의 프로세서 코어만 사용되었으며 그 중 8개가 있습니다. 그 이유는 무엇입니까? 그것을 고치는 방법?


그리고 이것은 당신이 물어야 할 다섯 번째 포럼에 있습니다.
 
7Konstantin7 :

안녕 동지들.

말해봐, 나는 MT5에 익숙하지 않고 거의 사용하지 않았으며 테스트에는 하나의 프로세서 코어만 사용되었으며 그 중 8개가 있습니다. 그 이유는 무엇입니까? 그것을 고치는 방법?


테스트할 때 또는 최적화할 때? 테스트만 하면 하나의 코어가 작동하지만 전략 테스터에서 "최적화" 옵션이 활성화되면 모든 프로세서 코어가 작동합니다.
 
borilunad :

그들은 이해하지 못한 채 PredBar를 가지고 놀았고, 결과는 다음과 같습니다! 첫 매트. 부분을 가르쳐!

감사합니다, 배웠습니다, 수정했습니다.
 
evillive :
그리고 이것은 당신이 물어야 할 다섯 번째 포럼에 있습니다.

"인생"이 무엇이든 간에 그들은 MT5에서 피웁니다. 곧 현장에서 피울 것입니다. 저는 거기에 전혀 앉아 있지 않습니다. 그래서 제가 여기에 질문을 한 것입니다.

바라바쉬카크 :
테스트할 때 또는 최적화할 때? 테스트만 하면 하나의 코어가 작동하지만 전략 테스터에서 "최적화" 옵션이 활성화되면 모든 프로세서 코어가 작동합니다.

모두 덕분에 테스트 할 때 하나의 코어가 작동하고 일반적으로 모든 것이 제대로 작동한다는 것을 알았습니다.

이것은 완전히 어리석은 일입니다. 분명히 의도적으로 그렇게 한 것 같습니다. 테스트할 때 프로세서의 전체 성능을 사용하지 않는 이유는 명확하지 않습니다.

 
7Konstantin7 :

"인생"이 무엇이든 간에 그들은 MT5에서 피웁니다. 곧 현장에서 피울 것입니다. 저는 거기에 전혀 앉아 있지 않습니다. 그래서 제가 여기에 질문을 한 것입니다.

모두 덕분에 테스트 할 때 하나의 코어가 작동하고 일반적으로 모든 것이 제대로 작동한다는 것을 알았습니다.

이것은 완전히 어리석은 일입니다. 분명히 의도적으로 그렇게 한 것 같습니다. 테스트할 때 프로세서의 전체 성능을 사용하지 않는 이유는 명확하지 않습니다.

최적화를 활성화하지 않고 테스트할 때 모든 코어를 로드하는 이유는 무엇입니까? 결국 시각화로 테스트하는 경우 여기에 서두르지 않지만 시각화 없이 테스트하는 경우 현대 컴퓨터는 씨앗과 같은 작업을 하나의 코어에서 클릭합니다.
사유: