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

[Deleted]  
abolk :

그러나 그것은 필요합니다 (비교)


일반 표시기의 코드를 가져 와서 코드 형식을 확인하십시오.

예, 큰 차이를 보이지 않습니다. 다음은 예를 들어 분야 표준입니다. 복잡할 때 간단하게 이러한 것을 얻을 수 있습니다. 그러나 대괄호 자체 외에도 대소문자가 ";"일 수 있습니다. 예를 들어...

 //+------------------------------------------------------------------+
//|                                                       Discipline |
//|                 Copyright © 1999-2008, MetaQuotes Software Corp. |
//|                                                         FX_FISH  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Kiko Segui"
#property link       "webtecnic@terra.es"
//----
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//----
double buffer1[];
double buffer2[];
//----
extern int period= 10 ;
extern int price= 0 ; // 0 or other = (H+L)/2
                     // 1 = Open
                     // 2 = Close
                     // 3 = High
                     // 4 = Low
                     // 5 = (H+L+C)/3
                     // 6 = (O+C+H+L)/4
                     // 7 = (O+C)/2
extern bool Mode_Fast=false;
extern bool Signals  =true;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle( 0 , DRAW_HISTOGRAM , STYLE_SOLID , 2 , Lime );
   SetIndexBuffer ( 0 ,buffer1);
   SetIndexStyle( 1 , DRAW_HISTOGRAM , STYLE_SOLID , 2 , Red );
   SetIndexBuffer ( 1 ,buffer2);
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   int i;
   double tmp;
//----
   for (i= 0 ;i< Bars ;i++)
     {
       ObjectDelete ( "Sel" +DoubleToStr(i, 0 ));
       ObjectDelete ( "Buy" +DoubleToStr(i, 0 ));
       ObjectDelete ( "Exit" +DoubleToStr(i, 0 ));
     }
   return ( 0 );
  }
double Value= 0 ,Value1= 0 ,Value2= 0 ,Fish= 0 ,Fish1= 0 ,Fish2= 0 ;
int buy= 0 ,sell= 0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i;
   int barras;
   double _price;
   double tmp;
   double MinL= 0 ;
   double MaxH= 0 ;
   double Threshold= 1.2 ;
//----
   barras= Bars ;
   if (Mode_Fast) barras= 100 ;
   i=barras-period- 1 ;
   while (i>= 0 )
     {
      MaxH=High[Highest( NULL , 0 ,MODE_HIGH,period,i)];
      MinL= Low[ Lowest( NULL , 0 ,MODE_LOW, period,i)];
       switch (price)
        {
         case 0 :  _price=(High[i]+Low[i])/ 2 ;                   break ;
         case 1 :  _price= Open[i];                             break ;
         case 2 :  _price= Close[i];                             break ;
         case 3 :  _price= High[i];                             break ;
         case 4 :  _price= Low[i];                               break ;
         case 5 :  _price=(High[i]+Low[i]+Close[i])/ 3 ;           break ;
         case 6 :  _price=(Open[i]+High[i]+Low[i]+Close[i])/ 4 ;   break ;
         case 7 :  _price=(Open[i]+Close[i])/ 2 ;                 break ;
         default : _price=(High[i]+Low[i])/ 2 ;                   break ;
        }
      Value= 0.33 * 2 *((_price-MinL)/(MaxH-MinL)- 0.5 ) + 0.67 *Value1;
      Value= MathMin ( MathMax (Value,- 0.999 ), 0.999 );
      Fish = 0.5 * MathLog (( 1 +Value)/( 1 -Value))+ 0.5 *Fish1;
      buffer1[i]= 0 ;
      buffer2[i]= 0 ;
//----
       if ((Fish< 0 ) && (Fish1> 0 ))
        {
         if (Signals)
           {
             ObjectCreate ( "Exit" +DoubleToStr(i, 0 ), OBJ_ARROW , 0 ,Time[i],_price);
            ObjectSet( "Exit" +DoubleToStr(i, 0 ), OBJPROP_ARROWCODE , 251 );
            ObjectSet( "Exit" +DoubleToStr(i, 0 ), OBJPROP_COLOR , Red );
           }
         buy= 0 ;
        }
       if ((Fish> 0 ) && (Fish1< 0 ))
        {
         if (Signals)
           {
             ObjectCreate ( "Exit" +DoubleToStr(i, 0 ), OBJ_ARROW , 0 ,Time[i],_price);
            ObjectSet( "Exit" +DoubleToStr(i, 0 ), OBJPROP_ARROWCODE , 251 );
            ObjectSet( "Exit" +DoubleToStr(i, 0 ), OBJPROP_COLOR , Red );
           }
         sell= 0 ;
        }
       if (Fish>= 0 )
      { buffer1[i]=Fish; }
       else
      { buffer2[i]=Fish; }
      tmp=i;
       if ((Fish<-Threshold) && (Fish>Fish1) && (Fish1<=Fish2))
        {
         if (Signals)
           {
             ObjectCreate ( "Sel" +DoubleToStr(i, 0 ), OBJ_ARROW , 0 ,Time[i],High[i]+ 5 * Point );
            ObjectSet( "Sel" +DoubleToStr(i, 0 ), OBJPROP_ARROWCODE , 226 );
            ObjectSet( "Sel" +DoubleToStr(i, 0 ), OBJPROP_COLOR , Red );
           }
         sell= 1 ;
        }
       if ((Fish>Threshold) && (Fish<Fish1) && (Fish1>=Fish2))
        {
         if (Signals)
           {
             ObjectCreate ( "Buy" +DoubleToStr(i, 0 ), OBJ_ARROW , 0 ,Time[i],Low[i]- 5 * Point );
            ObjectSet( "Buy" +DoubleToStr(i, 0 ), OBJPROP_ARROWCODE , 225 );
            ObjectSet( "Buy" +DoubleToStr(i, 0 ), OBJPROP_COLOR , Aqua );
           }
         buy= 1 ;
        }
      Value1=Value;
      Fish2=Fish1;
      Fish1=Fish;
      i--;
     }
   return ( 0 );
  }
//+------------------------------------------------------------------+
[Deleted]  
KONDOR :
괄호 조심
기호 ()

이게 네가 뜻한 바냐?

if(OrderSymbol()==Symbol())

그런 다음 수정했습니다. 오류가 남아 있습니다.

[Deleted]  

그래서 만약? 또는 어떻게?

지금 바꿔줄게...

다음과 같아야 합니다. if(OrderSymbol()==Symbol() ??

모두가 상징을 결정했습니다.

지정된 대괄호를 제거했습니다. 변경된 사항이 없습니다.

[Deleted]  
KONDOR :
끝에서 두 번째 괄호는 중복됩니다.
모두 동일 =(
 
frxmax :

오류는 어디에 있습니까? 괄호의 관점에서 모든 것이 정확히 맞는 것 같습니다.


 //+------------------------------------------------------------------+
//|                                                        Beta2.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
extern int        StopLoss= 100 ;
extern int        TakeProfit= 20 ;
extern double     Lot= 0.01 ;
extern int        cnt, ticket, total;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
       double LoCurent= iCustom ( NULL , 0 , "LO" , 0 , 0 );
       double LoPrevious= iCustom ( NULL , 0 , "LO" , 1 , 1 );
       double FtCurent= iCustom ( NULL , 0 , "FT" , 0 , 0 );
       double FtPrevious= iCustom ( NULL , 0 , "FT" , 1 , 1 );
//----
   if (total == 0 )
      {
         if (LoCurent>LoPrevious && FtCurent>FtPrevious)
            {
               ticket= OrderSend ( Symbol (),OP_BUY,Lot,Ask, 3 ,Bid-StopLoss* Point ,Bid+TakeProfit* Point , "Buy" , 1111 , 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 ); 
            } else 
             if (LoCurent<LoPrevious && FtCurent<FtPrevious)
               {
                  ticket= OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 ,Ask+StopLoss* Point ,Ask-TakeProfit* Point , "Sell" , 2222 , 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 );
      }
       else 
       if (LoCurent<LoPrevious || FtCurent<FtPrevious || LoCurent<- 30 || LoPrevious<- 30 )
         {
             if ( OrderSelect (ticket,SELECT_BY_POS,MODE_TRADES)==false) //break;
               {
                   if (OrderSymbol()== Symbol () )
                   {
                       if (OrderType()==OP_SELL)
                         {
                         OrderClose(OrderTicket(),OrderLots(),Bid, 3 , Violet ); // close position
                         }
                     return ( 0 );
                   }
               }
         }
         else
             if (LoCurent>LoPrevious || FtCurent>FtPrevious || LoCurent> 30 || LoPrevious> 30 )
               {
                   if ( OrderSelect (ticket,SELECT_BY_POS,MODE_TRADES)==false) //break;
                     {
                         if (OrderSymbol()== Symbol () )
                           {
                               if (OrderType()==OP_SELL)
                                 {
                                    OrderClose(OrderTicket(),OrderLots(),Ask, 3 , Violet ); // close position
                                 }
                               return ( 0 );
                           }
                     }
               }
           //}
return ( 0 );
      }
//+------------------------------------------------------------------+
 
frxmax :
더 이상 오류가 없습니다.
 else 
       if (LoCurent<LoPrevious || FtCurent<FtPrevious || LoCurent<- 30 || LoPrevious<- 30 )
         {
             if ( OrderSelect (ticket,SELECT_BY_POS,MODE_TRADES)) // break ругается

               {
                   if (OrderSymbol()== Symbol ())
                   {
                       if (OrderType()==OP_SELL)
                         {
                         OrderClose(OrderTicket(),OrderLots(),Bid, 3 , Violet ); // close position
                         }
                     return ( 0 );
                   }
               }
         }
         else
             if (LoCurent>LoPrevious || FtCurent>FtPrevious || LoCurent> 30 || LoPrevious> 30 )
               {
                   if ( OrderSelect (ticket,SELECT_BY_POS,MODE_TRADES)) // break ругается
                     {
                         if (OrderSymbol()== Symbol ())
                           {
                               if (OrderType()==OP_SELL)
                                 {
                                    OrderClose(OrderTicket(),OrderLots(),Ask, 3 , Violet ); // close position
                                 }
                               return ( 0 );
                           }
                     }
               }
      
return ( 0 );
      }
[Deleted]  
abolk , 도와주셔서 감사합니다. 감사합니다. , 콘도르
[Deleted]  

여기서만 작업 코드는 그다지 좋은 결과를 보여주지 않습니다.

이해를 도와주세요. 이전에 수신한 신호의 방향으로 하나의 주문만 열리도록 하는 방법. 표시기 중 하나가 반환 신호를 표시하는 순간에 닫습니다. 통화 쌍을 모두 고려한

[Deleted]  
NumberOfBarOpenLastPos() 함수를 보면 주문이 열린 막대의 번호를 확인합니다.
[Deleted]  

다음과 같이 최대한 빨리 필요합니다. (예: Eurodol 차트에 구매 신호가 있음)

총>1인 경우

통화 쌍 = 유로돌인 경우

매도 주문인 경우

이 주문을 닫습니다

구매 오픈


일반 보기는 다음과 같아야 합니다.

if (매수 신호)

합계==0인 경우

구매 열기

그렇지 않으면 (총 >1)

어떤 통화 쌍 거래가 열려 있는지 확인

우리에 따르면

판매하는 경우

닫기 및 구매로 돌아가기

그렇지 않으면 (판매를 위해 구동) ....