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

 
KarpovNikolay :

모두들 안녕. 저는 거래가 처음이고 고문과 함께 데모를 하고 있지만 지금은 $45로 시작하고 싶습니다. 아직 어드바이저를 테스트 중이므로 신호를 사용하고 싶습니다. MT4를 사용합니다. 나는 최고의 신호를 선택하는 데 도움을 요청하는 목록을 선택했습니다. 목록은 다음과 같습니다.

https://www.mql5.com/ru/signals/10276

https://www.mql5.com/en/signals/11021

https://www.mql5.com/ru/signals/6283

https://www.mql5.com/ru/signals/10964

https://www.mql5.com/ru/signals/9649

초보자에게는 운이 좋은 것뿐입니다! 그러나 더 나은 방법은 시간을 낭비하지 말고 거래, 언어를 배우는 것입니다! 어쩌면 당신도 운이 좋을 것입니다!
 
안녕하세요. 제발 도와주세요. sig = 1 변수를 사용하면 변수 pol이 잔액을 기억하고 그 값을 변경하지 않습니다. 얼마나 더 표시되는지에 관계없이, 그리고 sig가 다시 1인 경우 현재 코드를 기억할 수 있습니다. , 말해주세요
 
sannin :
안녕하세요. 제발 도와주세요. sig = 1 변수를 사용하면 변수 pol이 잔액을 기억하고 그 값을 변경하지 않습니다. 얼마나 더 표시되는지에 관계없이, 그리고 sig가 다시 1인 경우 현재 코드를 기억할 수 있습니다. , 말해주세요
     if (сиг == 1 ) pol = AccountBalance();
 
TarasBY :


잔액이 변경되면 바닥은 새 잔액과 동일합니다.

이 작업을 수행하면 즉시 표시됩니다.

국제 폴;
주석 ("\n 잔액: ", pol);

pol=계정 잔액();

 

트레이딩 테스트를 위해 어드바이저를 만들었는데 한가지 알 수 없는게...

베이/셀은 최대 및 최소 MA로 열립니다.

// BUY 포지션 을 열기 위한 조건
if(MA_L1<MA_L0&&Ask<=MA_L0&&MA_0>MA_1&&HA_up>HA_dw)

// SELL 포지션을 열기 위한 조건
if(MA_H1>MA_H0&&Bid>=MA_H0&&MA_0<MA_1&&HA_up<HA_dw)

 #include <b-Lots.mqh>
extern double TrailingStop = 30 ;
extern double Sploss = 15 ;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start() {
   double HA_up,HA_dw;
   double MA_H0,MA_H1,MA_L0,MA_L1,MA_0,MA_1;
   int i, cnt, ticket, total;
   bool flag= true ;

   if ( Bars < 100 ) {
       Print ( "bars less than 100" );
       return ( 0 ); 
   }
// Проверяем стоит ли открываться
   
   cnt=OrdersHistoryTotal()- 1 ;
   for (i=cnt;i>= 0 ;i--) {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY )) continue ;
       if (OrderOpenTime()>=Time[ 0 ]) { // Time[0] - если позиция открывается на нулевом баре текущего символа
         flag= false ;
         break ;
      }
   }
   cnt= OrdersTotal ()- 1 ;
   for (i=cnt;i>= 0 ;i--) {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderOpenTime()>=Time[ 0 ]) { // Time[0] - если позиция открывается на нулевом баре текущего символа
         flag= false ;
         break ;
      }
   }
   if (!flag) return ( 0 ); 
//-----------------------------------------------
   MA_H0= iMA ( 0 , 0 , 3 , 0 , MODE_SMA , PRICE_HIGH , 0 );
   MA_H1= iMA ( 0 , 0 , 3 , 0 , MODE_SMA , PRICE_HIGH , 1 );
   MA_0= iMA ( 0 , 0 , 3 , 0 , MODE_EMA , PRICE_MEDIAN , 0 );
   MA_1= iMA ( 0 , 0 , 3 , 0 , MODE_EMA , PRICE_MEDIAN , 1 );
   MA_L0= iMA ( 0 , 0 , 3 , 0 , MODE_SMA , PRICE_LOW , 0 );
   MA_L1= iMA ( 0 , 0 , 3 , 0 , MODE_SMA , PRICE_LOW , 1 );
   HA_up= iCustom ( 0 , 0 , "Heiken Ashi" , 3 , 0 );
   HA_dw= iCustom ( 0 , 0 , "Heiken Ashi" , 2 , 0 );

//задали все данные 

   total= OrdersTotal ();
   if (total< 1 ) 
     {
       // Проверка свободной маржи
       if (AccountFreeMargin()<( 1000 *Lots))
        {
         Print ( "We have no money. Free Margin = " , AccountFreeMargin());
         return ( 0 );  
        }
       // Условие открытие позиции BUY
       if (MA_L1<MA_L0&&Ask<=MA_L0&&MA_0>MA_1&&HA_up>HA_dw)
        {
         Lots=GetSizeLot();
         ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 5 ,Bid-Sploss* Point , 0 , "" , 16384 , 0 ,Green);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "BUY order opened : " ,OrderOpenPrice());
           }
         else Print ( "Error opening BUY order : " , GetLastError ()); 
         return ( 0 ); 
        }
       // Условие открытие позиции SELL
       if (MA_H1>MA_H0&&Bid>=MA_H0&&MA_0<MA_1&&HA_up<HA_dw)
        {
         Lots=GetSizeLot();
         ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 5 ,Ask+Sploss* Point , 0 , "" , 16384 , 0 ,Red);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "SELL order opened : " ,OrderOpenPrice());
           }
         else Print ( "Error opening SELL order : " , GetLastError ()); 
         return ( 0 ); 
        }
       return ( 0 );
     }
    
   for (cnt= 0 ;cnt<total;cnt++)
     {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if (OrderType()<=OP_SELL &&   
         OrderSymbol()== Symbol ())  
        {
         if (OrderType()==OP_BUY)   // длинная позиция открыта
           {
           if ( NormalizeDouble ( MathAbs (MA_H0-Bid), Digits )< Point )
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid, 3 ,Violet); 
                 return ( 0 ); 
                }
             // трейлинг-стоп для длинной позиции
             if (TrailingStop> 0 )  
              {                 
               if (Bid-OrderOpenPrice()> Point *TrailingStop)
                 {
                   if (OrderStopLoss()<Bid- Point *TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid- Point *TrailingStop,OrderTakeProfit(), 0 ,Green);
                     return ( 0 );
                    }
                 }
              }
           }
         else 
           {
           if ( NormalizeDouble ( MathAbs (MA_L0-Ask), Digits )< Point )
              {
               OrderClose(OrderTicket(),OrderLots(),Ask, 3 ,Violet); 
               return ( 0 ); 
              }
             // трейлинг-стоп для короткой позиции
             if (TrailingStop> 0 )  
              {                 
               if ((OrderOpenPrice()-Ask)>( Point *TrailingStop))
                 {
                   if ((OrderStopLoss()>(Ask+ Point *TrailingStop)) || (OrderStopLoss()== 0 ))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ Point *TrailingStop,OrderTakeProfit(), 0 ,Red);
                     return ( 0 );
                    }
                 }
              }
           }
        }
     }
   return ( 0 );
  }

질문: 현재 양초의 위치가 닫히지 않았습니다(조건이 오지 않음), MA_0= iMA( 0, 0, 3, 0, MODE_EMA, PRICE_MEDIAN, 0 )와 일치할 때 다음 양초에서 즉시 닫히게 하는 방법 ;

청산 조건이 있습니다: 현재 양초의 고점 또는 저점을 가로지르지만, 포지션을 연 후 다음 양초에서 해당 포지션을 청산할 수도 있어야 합니다.

if ( NormalizeDouble ( MathAbs (MA_0-Ask), Digits )< Point )를 작성할 수 있지만 두 번째 열린 촛불의 조건을 충족하는 방법.


코드로 대답할 수 있다면 예제가 더 명확합니다.

 
sannin :


잔액이 변경되면 바닥은 새 잔액과 동일합니다.

이 작업을 수행하면 즉시 표시됩니다.

국제 폴;
Comment("\n 잔액: ", pol);

pol=계정 잔액();

이 코드는 아무것도 확인하지 않습니다. 그리고 pol 변수는 sig 변수와 마찬가지로 전역적으로 선언되어야 합니다.
 
TarasBY :
이 코드는 아무것도 확인하지 않습니다. 그리고 pol 변수는 sig 변수와 마찬가지로 전역적으로 선언되어야 합니다.


글쎄요.. 어떻게 할까요... 왜냐하면 그 순간은 변수 성별의 현재 값을 보여주기 때문입니다

첫 번째 바닥은 초기 잔액을 표시해야 하므로

내가 주문을 열고 내 잔액은 원래 것과 동일하지만 이익으로 마감하거나 그 반대의 경우 잔액이 변경됩니다.

특정 조건에서 새 잔액이 되기 위해 바닥이 필요하고 조건이 올 때까지 바닥이 원래 잔액과 동일합니다.

 
borilunad :
MQL4 코드의 경우 SRC 를 사용하면 모든 사람이 이를 파악하고 도움을 받을 수 있습니다!

감사합니다.
 
sannin :


글쎄요.. 어떻게 할까요... 왜냐하면 그 순간은 변수 성별의 현재 값을 보여주기 때문입니다

첫 번째 바닥은 초기 잔액을 표시해야 하므로

내가 주문을 열고 내 잔액은 원래 것과 동일하지만 이익으로 마감하거나 그 반대의 경우 잔액이 변경됩니다.

특정 조건에서 새 잔액이 되기 위해 바닥이 필요하고 조건이 올 때까지 바닥이 원래 잔액과 동일합니다.

듣는 법을 모르는 사람들의 범주가 있으며, 그들을 돕는 것은 거의 불가능합니다.
 
TarasBY :
듣는 법을 모르는 사람들의 범주가 있으며, 그들을 돕는 것은 거의 불가능합니다.


안녕하세요. 제발 도와주세요. sig = 1 변수를 사용하면 pol 변수가 잔액을 기억하고 그 값을 변경하지 않고 얼마나 더 표시되는지에 관계없이 sig가 다시 1이면 현재 코드 를 기억해야 합니다. , 말해주세요

동의한다

누구나 똑똑할 수 있다

죄송합니다..사실 2일동안 과제가 두려웠어요..

나는 도움을 요청하지 않을 것이다