[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 366

削除済み  
abolk :

sen

ama gerekli (karşılaştırma)


herhangi bir normal göstergenin kodunu alın ve kodun nasıl biçimlendirildiğini görün

evet pek bir fark göremiyorum İşte örneğin disiplinler standardı. Basitçe böyle ve elde edildiğinde karmaşıklıktan. ancak, parantezin kendisine ek olarak, durum ";" içinde olabilir. örneğin...

 //+------------------------------------------------------------------+
//|                                                       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 );
  }
//+------------------------------------------------------------------+
削除済み  
KONDOR :
parantezlere dikkat edin
sembol ()

Demek istediğin bu mu?

if(OrderSymbol()==Symbol())

sonra düzeltildi. hata kalır.

削除済み  

öyleyse eğer? veya nasıl?

şimdi değiştireceğim...

şöyle görünmelidir: if(OrderSymbol()==Symbol() ??

herkes sembole karar verdi.

Belirtilen braket kaldırıldı - hiçbir şey değişmedi.

削除済み  
KONDOR :
sondan bir önceki parantez gereksiz
hepsi aynı =(
 
frxmax :

a hatası nerede, parantez içinde her şey tam olarak doğru görünüyor?


 //+------------------------------------------------------------------+
//|                                                        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 :
artık hata yok.
 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 );
      }
削除済み  
abolk , YARDIMLARINIZ İÇİN TEŞEKKÜR EDERİM. , KONDOR
削除済み  

sadece burada çalışma kodu çok iyi sonuçlar vermiyor.

anlamama yardım et. daha önce alınan sinyal doğrultusunda sadece bir siparişin açılması için nasıl yapılır. göstergelerden birinin dönüş sinyali gösterdiği anda kapatın. ve hepsi döviz çiftini hesaba katarak

削除済み  
NumberOfBarOpenLastPos() işlevine bakın, siparişin açıldığı çubuğun numarasını kontrol eder
削除済み  

En kısa zamanda şu şekilde ihtiyacım var: (örneğin Eurodol grafiğinde satın alma sinyali vardı)

toplam> 1 ise

döviz çifti = eurodol ise

eğer bir satış emri

bu siparişi kapat

satın almak için açık


Genel görünüm şöyle görünmelidir:

if (satın al sinyali)

toplam==0 ise

bir satın alma aç

aksi halde (toplam >1)

hangi döviz çifti işlemlerinin açık olduğunu kontrol edin

eğer bize göre

satılıksa

kapat ve satın almaya geri dön

aksi takdirde (satılık için sürülür) ....