[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 198

 
hmmm.... Şey, ben şahsen her şeyin doğru yazıldığını düşünüyorum - tek sorun kod parçacıklarının yerleştirilmesinde.... doğru yerleştirebilir misiniz? nasıl yapacağımı anlamıyorum
 
splxgf :
Dürüst olmak gerekirse, bir işlevi diğerinin sınırları içinde tarif etmenin mümkün olup olmadığını bilmiyorum, böyle bir şey görmedim.
Biz karanlık insanları karıştırmayın. Bu dal düzeyinde, tüm kullanıcı tanımlı işlevlerin Başlat işlevinin dışında bulunması gerektiğini belirtmek yeterlidir.
 
CLAIN :
hmmm.... Şey, ben şahsen her şeyin doğru yazıldığını düşünüyorum - tek sorun kod parçacıklarının yerleştirilmesinde.... doğru yerleştirebilir misiniz? nasıl yapacağımı anlamıyorum

Eh, kesinlikle yayınlamayacağım, ancak zaten yazıldığı için, kullanıcı tanımlı tüm işlevler dışında başlar.

Kavram düzeyinde

Başlangıç(){}

MACD{}

AnalizSinyal(){}

Kullanıcı tanımlı işlevlerin açıklamasını ayrı bir dosyadan kaldırın, programın geri kalanının hatalı parantezler hakkında mesajlar olmadan derlendiğinden emin olun ve her işlevi ortaya çıkan kodun en sonuna kopyalayın.

 

Teşekkürler, her şey ortaya çıktı =) sadece o açmıyor, ama bunlar zaten önemsiz =) Sensiz yapmazdım)

 //+------------------------------------------------------------------+
//|                                                     MACD ^^^.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

extern int TP = 100 ; 
extern int TS = 100 ;
extern double lots = 0.1 ;
int slip = 3 ;
int Magic = 1 ;

int total;
int ticket = 0 ; //объявил тотал и тикет



//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----


int signal = signal_MACD(); 
AnalyzeSignal(signal);




//----
   return ( 0 );
  }
//+------------------------------------------------------------------+






int signal_MACD()
{
   int MACD[ 8 ] = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 };
MACD[ 0 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 7 );
MACD[ 1 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 6 );
MACD[ 2 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 5 );
MACD[ 3 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 4 );
MACD[ 4 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 3 );
MACD[ 5 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 2 );
MACD[ 6 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 1 );
MACD[ 7 ] = iMACD ( Symbol (), 1 , 5 , 34 , 5 , PRICE_CLOSE ,MODE_MAIN, 0 );
   total = OrdersTotal ();
   if (total< 1 )
   {
       if (MACD[ 0 ]< 0 )
      {
         if (MACD[ 1 ]> 0 )
         {
             if (MACD[ 2 ]> 0 )
            {
               if (MACD[ 3 ]> 0 )
               {
                   if (MACD[ 4 ]> 0 )
                  {
                     if (MACD[ 5 ]> 0 )
                     {
                         if (MACD[ 6 ]> 0 )
                        {
                           if (MACD[ 7 ]< 0 )
                           {
                               return (- 100 );
                           }
                        }
                     }
                  }
               }
            }
         }
      }
       if (MACD[ 0 ]> 0 )
      {
         if (MACD[ 1 ]< 0 )
         {
             if (MACD[ 2 ]< 0 )
            {
               if (MACD[ 3 ]< 0 )
               {
                   if (MACD[ 4 ]< 0 )
                  {
                     if (MACD[ 5 ]< 0 )
                     {
                         if (MACD[ 6 ]< 0 )
                        {
                           if (MACD[ 7 ]> 0 )
                           {
                               return ( 100 );
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   }
}

void AnalyzeSignal( int signal)
{
   if (signal == 100 )
   {
      ticket = OrderSend ( Symbol (),OP_BUY,lots,Ask,slip,Bid-TS* Point ,Bid+TP* Point , "покупаем" ,Magic, 0 , Green );
       if (ticket> 0 )
      {
         OrderSelect (ticket,SELECT_BY_TICKET);
         Print ( "открылись на покупку по цене:" , OrderOpenPrice ());
      }
       else
      {
         Print ( "открыться не удалось по причине:" , GetLastError ());
         return ( 0 );
      }
   }
   if (signal == - 100 )
   {
      ticket = OrderSend ( Symbol (),OP_SELL,lots,Bid,slip,Ask+TS* Point ,Ask-TP* Point , "Продаем" ,Magic, 0 , Green );
       if (ticket> 0 )
      {
         OrderSelect (ticket,SELECT_BY_TICKET);
         Print ( "открылись на продажу по цене:" , OrderOpenPrice ());
      }
       else
      {
         Print ( "открыться не удалось по причине:" , GetLastError ());
         return ( 0 );
      }
   }
}

 

programcı tavsiyesine ihtiyacım var


avatar
1
Metamql 20.09.2011 14:31
Sevgili profesyoneller, tavsiye konusunda yardım edin. 5 ve 60 periyotlu iki hareketli ortalama vardır. Hızlı MA aşağıdan yukarıya + filtrelerden yavaş olanı geçtiğinde, bir Al ticareti açılır. Sorun şu ki, bir ticareti sadece bir kez ve kapandığında açmaya zorlamak, yeni bir ticaret açmamak, açılmak için uygun koşullar olsa bile, ters bir kesişme oluşana kadar?
 

Merhaba.

Lütfen yardım edin - lütfen sayfa 196'daki gönderime cevap verin (int MAGIC hakkında soru;)

Şimdiden teşekkür ederim.

 
nemo811 :

Merhaba.

Lütfen yardım edin - lütfen sayfa 196'daki gönderime cevap verin (int MAGIC hakkında soru;)

Şimdiden teşekkür ederim.


Ve parametreler ile fonksiyonlar yapılmaya çalışıldı. Harici global değişkenleri kullanmamak için (her biri kendi yöntemiyle adlandırabilir)
 
sergeev :

programcı tavsiyesine ihtiyacım var


1
Metamql 20.09.2011 14:31
Sevgili profesyoneller, tavsiye konusunda yardım edin. 5 ve 60 periyotlu iki hareketli ortalama vardır. Hızlı MA aşağıdan yukarıya + filtrelerden yavaş olanı geçtiğinde, bir Al ticareti açılır. Sorun şu ki, bir ticareti sadece bir kez ve kapandığında açmaya zorlamak, yeni bir ticaret açmamak, açılmak için uygun koşullar olsa bile, ters bir kesişme oluşana kadar?

daha fazla açılmayı engelleyen bir bayrak ayarlayın ve geri geçerken bayrağı kaldırın, gevezeliği ortadan kaldırmak için birkaç çubuğu geciktirebilirsiniz
 
Vinin :

Ve parametreler ile fonksiyonlar yapılmaya çalışıldı. Harici global değişkenleri kullanmamak için (her biri kendi yöntemiyle adlandırabilir)

Onlar. tip:

 int OrdTicket_b( int MAGIC)
 {
   string SMB= Symbol ();
   int OrdTicket;
   int i;
   for (i= 0 ;i< OrdersTotal ();i++)
   {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
     {
       if ( OrderSymbol ()==SMB)
       {
         if ( OrderMagicNumber ()==MAGIC || OrderMagicNumber ()== 777 )
         {
           if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL)
           {
            OrdTicket= OrderTicket ();
           }  
         }  
       }          
     }
   }
   return (OrdTicket);
 }

???

...ve durum

     if ( OrderMagicNumber ()==MAGIC || OrderMagicNumber ()== 777 )

doğru izlenecek mi?

 
nemo811 :

Onlar. tip:

???

...ve durum

doğru izlenecek mi?


 int OrdTicket_b( int lMAGIC)
 {
   string SMB= Symbol ();
   int OrdTicket= 0 ;
   int i;
   for (i= 0 ;i< OrdersTotal ();i++)
   {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
     {
       if ( OrderSymbol ()==SMB)
       {
         if ( OrderMagicNumber ()==lMAGIC)
         {
           if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL)
           {
            OrdTicket= OrderTicket ();
           }  
         }  
       }          
     }
   }
   return (OrdTicket);
 }
Bunun gibi, OrdTicket değişkeninin bir varsayılan değere ayarlanması gerekir. Ve sonra açık pozisyon yok, ancak fonksiyon bir şeyler döndürecek