작은 도움? - 페이지 2

 
WHRoeder :
  1. 당연히 아니지. RTFM. 처음부터 돌아올 때만 새 틱을 받습니다.
  2. RTFM 및 테스터 제한 테스터에서 잠을 잘 수 없습니다
  3. 함수 반환 값이란 무엇입니까? 어떻게 사용합니까? - MQL4 포럼


도와주셔서 감사합니다. while 루프를 제거하고 각 주문 실행에서 시작 기능을 중단하고 IsTesting 기능을 제거했으며(현재로서는) OrderSend가 작동하는 것으로 보입니다.


Print() 함수가 있는 위치에 상관없이 지금 실행하면 저널(또는 로그 북)에 아무 것도 표시되지 않습니다. 초기 주문은 제대로 열리고 코드의 다음 줄에 인쇄 주문이 있더라도 아무 것도 표시되지 않습니다.

 
jwmsb :

도와주셔서 감사합니다. while 루프를 제거하고 각 주문 실행에서 시작 기능을 중단하고 IsTesting 기능을 제거했으며(현재로서는) OrderSend가 작동하는 것으로 보입니다.


Print() 함수가 있는 위치에 상관없이 지금 실행하면 저널(또는 로그 북)에 아무 것도 표시되지 않습니다. 초기 주문은 제대로 열리고 코드의 다음 줄에 인쇄 주문이 있더라도 아무 것도 표시되지 않습니다.


당신의 코드는 지금 어떻게 보이나요??
 
악몽을 꾸어서 죄송합니다! 나는 전략 테스터 에서 오류에 대한 정보를 찾으려고했지만 도움이되지 않는 Google :s
 //+------------------------------------------------------------------+
//|                                                   SMA scripy.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
extern int z= 1234 ;
int total;
//---
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   int i;
   total= 0 ;
   if ( OrdersTotal ()!= 0 )
      {
       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)                                                     
         {
         if ( OrderSelect (i,SELECT_BY_POS))
            {
             if ((OrderSymbol()== Symbol ())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&( iMA ( Symbol (), 0 , 6 , 0 , MODE_SMA , PRICE_CLOSE , 0 )< iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 )))
                  { 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                  
               }
               if ((OrderType()==OP_SELL)&&( iMA ( Symbol (), 0 , 6 , 0 , MODE_SMA , PRICE_CLOSE , 0 )> iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 )))
                  {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                  
               }
               else 
                  {
                  total++;                                                                 
               }
            }
         }
      }
   }
//----
   return ;
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return ( 0 );
}
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
   {
//----
   int i,L;
   if (AccountBalance()> 50 )                                                                                     
   {
//-----
double SMA6= iMA ( Symbol (), 0 , 6 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
double SMA21= iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
double RSI70= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )< 70 ;
double RSI30= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )> 30 ;                                                                                                            
//----
   if (total== 0 )
      {
       if ((RSI70)&&(SMA6>SMA21))
         {                                                                                                                       
         OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 0 , 0 , 0 , "" ,z, 0 ,Red); 
         Print ( "WE ARE HERE" );
         total+= 1 ;                                                       
      }
       if ((RSI30)&&(SMA6<SMA21))
         {
         OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 0 , 0 , 0 , "" ,z, 0 ,Blue);
         total+= 1 ;
      }  
   }
//---
   if (total!= 0 )
      {
      L= 0 ;
       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)                                                    
         {
         if ( OrderSelect (i,SELECT_BY_POS))
            {
             if ((OrderSymbol()== Symbol ())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&(SMA6<SMA21))
                  { 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);
                     total+=- 1 ;
                     break ;
               }
               if ((OrderType()==OP_SELL)&&(SMA6>SMA21))
                  {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                 
                     total+=- 1 ;
                     break ;
               }
               else 
                  {
                  L++;                                                                  
               }
            }
            total=L;
         }
      }
   }
//----
}
//----
return ;
}
//-------------------------------------------
 

double, int, string, bool, datetime, color, ........ 무엇을 사용해야 하나요 ???....

 //-----
double SMA6= iMA ( Symbol (), 0 , 6 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
Print ( "SMA6=  " ,SMA6);
double SMA21= iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
Print ( "SMA21=  " ,SMA21);
double RSI70= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )< 70 ;
Print ( "RSI70=  " ,RSI70);
double RSI30= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )> 30 ;
Print ( "RSI30=  " ,RSI30);                                                                                                            
//----

더블인가요???

         OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 0 , 0 , 0 , "" ,z, 0 ,Red); 
         Print ( "WE ARE HERE" );

SEEEEEE 함수 반환 값이란 무엇입니까? 어떻게 사용합니까? - MQL4 포럼

큰 설명

함수가 OrderSend() 와 같은 int 를 반환하는 경우 다음과 같은 코드를 사용하여 함수가 작동했는지 확인하고 작동하지 않으면 로그에 오류를 보고할 수 있습니다. . .

 int TicketNumber;

TicketNumber = OrderSend ( . . . . . . . . );

**(******************* )
   {
   Print (******************);
   }
else
   {
   Print (************************);
   }

. WHRoeder가 제공한 링크를 참조하면 내가 여기에 별과 함께 숨긴 것을 찾을 수 있습니다 ......

거래 마감을 확인하는 것도 사용하십시오.

코드 내에서 이와 같은 것을 만드십시오.... 그런 식으로 ordersend가 실패할 때 오류의 종류와 출처를 알 수 있습니다.

.

orderclose가 실패하면 어떻게 됩니까?.......?????

 

RSI와 MA는 모두 이중이므로 변수도 필요하지 않습니까?

https://docs.mql4.com/indicators/iRSI && https://docs.mql4.com/indicators/iMA

인쇄 오류를 코딩했지만 저널에 아무 것도 인쇄되지 않아 어떤 오류가 발생했는지 확인할 수 없습니다. 나는 여전히 분명한 것을 놓치고 있습니까? 이제 다시 매도를 시작하고 닫을 수 없습니다...

 //+------------------------------------------------------------------+
//|                                                   SMA scripy.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
extern int z= 1234 ;
int total;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   int i;
   total= 0 ;
   if ( OrdersTotal ()!= 0 )
      {
       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)                                                     
         {
         if ( OrderSelect (i,SELECT_BY_POS))
            {
             if ((OrderSymbol()== Symbol ())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&( iMA ( Symbol (), 0 , 6 ,- 3 , MODE_SMA , PRICE_CLOSE , 0 )< iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 )))
                  { 
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                  
               }
               if ((OrderType()==OP_SELL)&&( iMA ( Symbol (), 0 , 6 ,- 3 , MODE_SMA , PRICE_CLOSE , 0 )> iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 )))
                  {
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);                  
               }
               else 
                  {
                  total++;                                                                 
               }
            }
         }
      }
   }
//----
   return ;
}
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
   {
//----
   int ticket,i,L;
   bool x;
   if (AccountBalance()> 50 )                                                                                     
   {
//-----
double SMA6= iMA ( Symbol (), 0 , 6 ,- 3 , MODE_SMA , PRICE_CLOSE , 0 );
Print ( "SMA6 is " ,SMA6);
double SMA21= iMA ( Symbol (), 0 , 21 , 0 , MODE_SMA , PRICE_CLOSE , 0 );
Print ( "SMA21 is " ,SMA21);
double RSI70= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )< 70 ;
Print ( "RSI70 is " ,RSI70);
double RSI30= iRSI ( Symbol (), PERIOD_D1 , 14 , PRICE_CLOSE , 0 )> 30 ; 
Print ( "RSI30 is " ,RSI30);                                                                                                           
//----
   if (total== 0 )
      {
       if ((RSI70)&&(SMA6>SMA21))
         {                                                                                                                       
         ticket= OrderSend ( Symbol (),OP_BUY,v(AccountBalance()),Ask, 0 , 0 , 0 , "" ,z, 0 ,Red); 
         total+= 1 ;                                                       
         if (ticket< 0 )
            {
             Print ( "OrderSend Failed" , GetLastError ());
         }
      }
       if ((RSI30)&&(SMA6<SMA21))
         {
         ticket=OrderSend ( Symbol (),OP_SELL,v(AccountBalance()),Bid, 0 , 0 , 0 , "" ,z, 0 ,Blue);
         total+= 1 ;
         if (ticket< 0 )
            {
             Print ( "OrderSend Failed" , GetLastError ());
         }
      }  
   }
//---
   if (total!= 0 )
      {
      L= 0 ;
       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)                                                    
         {
         if ( OrderSelect (i,SELECT_BY_POS))
            {
             if ((OrderSymbol()== Symbol ())&&(OrderMagicNumber()==z))
               {
               if ((OrderType()==OP_BUY)&&(SMA6<SMA21))
                  { 
                  x=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);
                     if (x== false )
                        {
                         Print ( "Error is " , GetLastError ());
                     }
                     else total+=- 1 ;
                     break ;
               }
               if ((OrderType()==OP_SELL)&&(SMA6>SMA21))
                  {
                  x=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0 ,Green);   
                     if (x== false )
                        {
                         Print ( "Error is " , GetLastError ());
                     }
                     else 
                        {
                        total+=- 1 ;
                     }
                     break ;
               }
               else 
                  {
                  L++;                                                                  
               }
            }
            total=L;
         }
      }
   }
//----
}
//----
return ;
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return ( 0 );
}
//-------------------------------------------------------------------+
double v( double k)
{
   double v=((k* 0.015 )/ 1000 );
   if (v<MarketInfo( Symbol (),MODE_MINLOT))
      {
      v=MarketInfo( Symbol (),MODE_MINLOT);
       return (v);
   }
   else
      {
       return (v);
   }
}
//-------------------------------------------------------------------+
 

duuuhhhh iRSI는 두 배이지만 비교 출력은 1입니다. 그래서 RSI30과 RSI70을 RSI로 교체하고 비교를 해보니 모두 만세! SMA6을 변경하여 시프트하는 경우를 제외하고 항상 SMA6=0을 출력합니까? 왜요?

도움을 주셔서 감사합니다! 다음에는 너무 귀찮게하지 않기를 바랍니다!

 
jwmsb :

RSI와 MA는 모두 이중이므로 변수도 필요하지 않습니까?

https://docs.mql4.com/indicators/iRSI && https://docs.mql4.com/indicators/iMA

인쇄 오류를 코딩했지만 저널에 아무 것도 인쇄되지 않아 어떤 오류가 발생했는지 확인할 수 없습니다. 나는 여전히 분명한 것을 놓치고 있습니까? 이제 다시 매도를 시작하고 닫을 수 없습니다...

데모 계정 차트에 EA 배치

터미널 저널만 보지마세요...
터미널 전문가도 찾아보세요 .....

거기에 인쇄된 것이 무엇입니까?

 
deVries :

데모 계정 차트에 EA 배치

터미널 저널만 보지마세요...
터미널 전문가도 찾아보세요 .....

거기에 인쇄된 것이 무엇입니까?


지금 인쇄하고 실행 중입니다 :) 도와주셔서 감사합니다. iRSI<70을 이중으로 정의하는 것이 잘못되었고(비교였기 때문에) 문제를 일으키고 있었습니다. 지금 인쇄하고 예상대로 작동합니다. 단, SMA 이동을 변경하면 SMA=0이 인쇄됩니까?
 
jwmsb :

지금 인쇄하고 실행 중입니다 :) 도와주셔서 감사합니다. iRSI<70을 이중으로 정의하는 것이 잘못되었고(비교였기 때문에) 문제를 일으키고 있었습니다. 지금 인쇄하고 예상대로 작동합니다. 단, SMA 이동을 변경하면 SMA=0이 인쇄됩니까?

동일한 설정의 SMA를 EA 차트에 배치하고 수행한 작업을 확인합니다.
 
   if (total== 0 )
      {
       if ((RSI70)&&(SMA6>SMA21))
         {                                                                                                                       
         ticket= OrderSend ( Symbol (),OP_BUY,v(AccountBalance()),Ask, 0 , 0 , 0 , "" ,z, 0 ,Red); 
         total+= 1 ;                                                       
         if (ticket< 0 )
            {
             Print ( "OrderSend Failed" , GetLastError ());
         }
      }

왜 합계가 += 1입니까?

이 순간에 나는 ordersend가 성공하는지 모른다

그리고 실패하면 열려고 한 주문 유형이 무엇인지 알 수 없습니다. 열려고 시도한 거래를 판매할 수도 있습니다.