[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) ....