bir kodla ilgili yardıma ihtiyacım var - sayfa 2

 
deVries :


Bana göre hala kodlama hakkında hiçbir şey bilmiyorsun

ve kodlama hakkında bir şeyler öğrenmek için hiçbir şey yapmıyorsunuz

bunu yapmak için ne gibi bir girişimde bulundun??

Yardım istiyorsan, yapma girişimini göster

Hala size yardımcı olacak bir şey yok ...

Evet. Benim için tamamen yeni. Bana önerebileceğin bir kitap var mı?
 
diamstar :
Evet. Benim için tamamen yeni. Bana önerebileceğin bir kitap var mı?

Tek Dosyada Rezervasyon Yapın
İndirin - 2 Mb
 
deVries :

Tek Dosyada Rezervasyon Yapın
İndirin - 2 Mb
Teşekkür ederim. Kitabı bitirdikten sonra ne kadar kötü olursa olsun bir şeyler yazacağım.
 
diamstar :
30 dakika


İşte başlamanıza yardımcı olabilecek bir şey.

Ve bu eski Çin meselesi hakkında, eğer zaten mql ile Çince sopa konuşmuyorsanız. Daha kolay, onunla daha fazla yardım alabilirsiniz ve parlak bir fikriniz varsa, mql bir ton para kazanmanıza yardımcı olacak. Aynı zamanda eğlencelidir.

İşte başlıyoruz:

 //+------------------------------------------------------------------+
//|                                               News_Trader_v1.mq4 |
//|                                            Copyright © 2013 _3DE |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013 _3DE"
#property link        "https://www.metaquotes.net"
extern string   Note1       = "Set parameters in Pips not points !" ;
extern string   Note2       = "Set day of the month for the news !" ;
extern string   Note3       = "Set to zero to trade every day    !" ;
extern string   Note4       = "Leave SetDistance to zero if trading news !" ;
extern int      TakeProfit  = 25 ; // Take profit pips
extern int      StopLoss    = 20 ; // Stop loss pips (manual trading)
extern int      SetDistance = 0 ; // Sistance for BuyStop and SellStop from price at news time
extern int      DayOfNews   = 0 ; // Day of the month of news
extern int      NewsHour    = 0 ; // Hour of news
extern int      NewsMin     = 0 ; // Minute of news
extern int      Expiration  = 5 ; // Expiration of pending orderes
extern int      BEPips      = 11 ; // Move to break even after BEPips
extern int      TrailingStop= 0 ; // What distance to keep trailing
extern int      Slip        = 5 ; // Slippage
extern int      MagicNumber= 2210 ; // Must be unique for every chart
extern double   Lots        = 0.1 ;
extern bool     WriteLog= false ; // Write a log file 
extern string   TradeLog    = "MI_Log" ;
input    string   EaComment   = "NewsTrader_EA" ;

double h,l,ho,lo,hso,lso,htp,ltp,sp,price;

string filename;
int pointMultiply= 10 ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   if ( Digits == 3 || Digits == 5 )
     {
      pointMultiply  *= 10 ;
      TakeProfit     *= 10 ;
      StopLoss       *= 10 ;
      BEPips         *= 10 ;
      TrailingStop   *= 10 ;
      SetDistance    *= 10 ;
     }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int i;
   int OrdersCondition,minofday,minofnews;

   filename= Symbol ()+TradeLog+ "-" + Month ()+ "-" + Day ()+ ".txt" ;

   if (BEPips> 0 ) DoBE(BEPips);

   if (TrailingStop> 0 ) DoTrail();

   OrdersCondition=CheckOrdersCondition();
   if ( Day ()==DayOfNews || DayOfNews== 0 )
     {
      minofday= Hour ()* 60 + Minute ();
      minofnews=NewsHour* 60 +NewsMin;

       if ((minofday==minofnews- 2 ) || (minofday==minofnews- 1 ))
        {
         h= iHigh ( NULL , PERIOD_M1 , 0 );
         l= iLow ( NULL , PERIOD_M1 , 0 );
         for (i= 1 ;i<= 3 ;i++) if ( iHigh ( NULL , PERIOD_M1 ,i)>h) h= iHigh ( NULL , PERIOD_M1 ,i);
         for (i= 1 ;i<= 3 ;i++) if ( iLow ( NULL , PERIOD_M1 ,i)<l) l= iLow ( NULL , PERIOD_M1 ,i);
         sp= Ask - Bid ;
         ho=h+sp+(pointMultiply)* Point ;
         lo=l-(pointMultiply)* Point ;
         hso=h+sp;
         lso=l;
         htp=ho+TakeProfit* Point -sp;
         ltp=lo-TakeProfit* Point +sp;
         //---
         ho= NormalizeDouble (ho, Digits );
         lo= NormalizeDouble (lo, Digits );
         hso= NormalizeDouble (hso, Digits );
         lso= NormalizeDouble (lso, Digits );
         htp= NormalizeDouble (htp, Digits );
         ltp= NormalizeDouble (ltp, Digits );
         if (SetDistance!= 0 )
           {
            price=( Ask + Bid )/ 2 ;
            h=price+SetDistance* Point ;
            l=price-SetDistance* Point ;
            ho= NormalizeDouble (h+sp, Digits );
            lo= NormalizeDouble (l-sp, Digits );
            hso= NormalizeDouble (ho-StopLoss* Point , Digits );
            htp= NormalizeDouble (ho+TakeProfit* Point , Digits );
            lso= NormalizeDouble (lo+StopLoss* Point , Digits );
            ltp= NormalizeDouble (lo-TakeProfit* Point , Digits );
           }
         if (OrdersCondition== 0 )
           {
             if (WriteLog)Write( "Opening BuyStop & SellStop, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
            OpenBuyStop();
            OpenSellStop();
           }

         if (OrdersCondition== 10 )
           {
             if (WriteLog)Write( "Opening SellStop, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
            OpenSellStop();
           }

         if (OrdersCondition== 1 )
           {
             if (WriteLog)Write( "Opening BuyStop , OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
            OpenBuyStop();
           }
        }
     }
   if ((minofday>=minofnews) && (minofday<=minofnews+Expiration- 1 ))
     {

       if (OrdersCondition== 1001 )
        {
         if (WriteLog)Write( "Deleting SellStop Because of BuyStop Hit, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteSellStop();
        }

       if (OrdersCondition== 110 )
        {
         if (WriteLog)Write( "Deleting BuyStop Because of SellStop Hit, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteBuyStop();
        }
     }

   if (minofday>=minofnews+Expiration)
     {
       if (OrdersCondition== 11 )
        {
         if (WriteLog)Write( "Deleting BuyStop and SellStop Because 5 min expired, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteBuyStop();
         DeleteSellStop();
        }

       if ((OrdersCondition== 10 ) || (OrdersCondition== 110 ))
        {
         if (WriteLog)Write( "Deleting BuyStop Because 5 min expired, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteBuyStop();
        }

       if ((OrdersCondition== 1 ) || (OrdersCondition== 1001 ))
        {
         if (WriteLog)Write( "Deleting SellStop Because 5 min expired, OrdersCondition=" +OrdersCondition+ " MinOfDay=" +minofday);
         DeleteSellStop();
        }
     }

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| int CheckOrdersCondition()                                       |
//+------------------------------------------------------------------+

int CheckOrdersCondition()
  {
   int result= 0 ;
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if (( OrderType ()== OP_BUY ) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==MagicNumber))
        {
         result+= 1000 ;
        }
       if (( OrderType ()== OP_SELL ) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==MagicNumber))
        {
         result+= 100 ;
        }
       if (( OrderType ()== OP_BUYSTOP ) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==MagicNumber))
        {
         result+= 10 ;
        }
       if (( OrderType ()== OP_SELLSTOP ) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==MagicNumber))
        {
         result+= 1 ;
        }

     }
   return (result); // 0 means we have no trades
  }
// OrdersCondition Result Pattern
//    1    1    1    1
//    b    s    bs   ss
//  
//+------------------------------------------------------------------+
//|void OpenBuyStop()                                                |
//+------------------------------------------------------------------+

void OpenBuyStop()
  {
   int ticket,tries;
   tries= 0 ;
   if (! GlobalVariableCheck ( "InTrade" ))
     {
       while (tries< 3 )
        {
         GlobalVariableSet ( "InTrade" , TimeCurrent ());   // set lock indicator
         ticket= OrderSend ( Symbol (), OP_BUYSTOP ,Lots,ho,Slip,hso,htp,EaComment,MagicNumber, 0 ,Red);
         if (WriteLog)Write( "in function OpenBuyStop OrderSend Executed , ticket =" +ticket);
         GlobalVariableDel ( "InTrade" );   // clear lock indicator
         if (ticket<= 0 )
           {
            tries++;
           }
         else tries= 3 ;
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenSellStop()
  {
   int ticket,tries;
   tries= 0 ;
   if (! GlobalVariableCheck ( "InTrade" ))
     {
       while (tries< 3 )
        {
         GlobalVariableSet ( "InTrade" , CurTime ());   // set lock indicator
         ticket= OrderSend ( Symbol (), OP_SELLSTOP ,Lots,lo,Slip,lso,ltp,EaComment,MagicNumber, 0 ,Red);
         if (WriteLog)Write( "in function OpenSellStop OrderSend Executed , ticket =" +ticket);
         GlobalVariableDel ( "InTrade" );   // clear lock indicator
         if (ticket<= 0 )
           {
            tries++;
           }
         else tries= 3 ;
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DoBE( int byPips)
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==MagicNumber)) // only look if mygrid and symbol...
        {
         if ( OrderType ()== OP_BUY ) if ( Bid - OrderOpenPrice ()>byPips* Point ) if ( OrderStopLoss ()< OrderOpenPrice ())
           {
             if (WriteLog)Write( "Movine StopLoss of Buy Order to BE+1" );
             OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice ()+ Point , OrderTakeProfit (),Red);
           }
         if ( OrderType ()== OP_SELL ) if ( OrderOpenPrice ()- Ask >byPips* Point ) if ( OrderStopLoss ()> OrderOpenPrice ())
           {
             if (WriteLog)Write( "Movine StopLoss of Buy Order to BE+1" );
             OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice ()- Point , OrderTakeProfit (),Red);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DoTrail()
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==MagicNumber)) // only look if mygrid and symbol...
        {

         if ( OrderType ()== OP_BUY )
           {
             if ( Bid - OrderOpenPrice ()> Point *TrailingStop)
              {
               if ( OrderStopLoss ()< Bid - Point *TrailingStop)
                 {
                   OrderModify ( OrderTicket (), OrderOpenPrice (), Bid - Point *TrailingStop, OrderTakeProfit (), 0 ,Green);
                   return ;
                 }
              }
           }

         if ( OrderType ()== OP_SELL )
           {
             if (( OrderOpenPrice ()- Ask )>( Point *TrailingStop))
              {
               if (( OrderStopLoss ()>( Ask + Point *TrailingStop)) || ( OrderStopLoss ()== 0 ))
                 {
                   OrderModify ( OrderTicket (), OrderOpenPrice (), Ask + Point *TrailingStop, OrderTakeProfit (), 0 ,Red);
                   return ;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DeleteBuyStop()
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==MagicNumber) && ( OrderType ()== OP_BUYSTOP ))
        {
         OrderDelete ( OrderTicket ());
         if (WriteLog)Write( "in function DeleteBuyStopOrderDelete Executed" );
        }

     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DeleteSellStop()
  {
   for ( int i= 0 ; i< OrdersTotal (); i++)
     {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==MagicNumber) && ( OrderType ()== OP_SELLSTOP ))
        {
         OrderDelete ( OrderTicket ());
         if (WriteLog)Write( "in function DeleteSellStopOrderDelete Executed" );
        }

     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Write( string str)
  {
   int handle;

   handle= FileOpen (filename, FILE_READ | FILE_WRITE | FILE_CSV , "/t" );
   FileSeek (handle, 0 , SEEK_END );
   FileWrite(handle,str+ " Time " + TimeToStr ( CurTime (), TIME_DATE | TIME_SECONDS ));
   FileClose (handle);
  }
//+------------------------------------------------------------------+


Haber ticareti ve manuel giriş için uygun hale getirmek için birkaç bit ve kod parçası ekledim. Muhtemelen amacınıza uygun olacaktır.

Bu EA aslında haber ticareti yapmak için tasarlandı, böylece ayın haber gününü, saatini ve dakikasını girin, pip olarak kar elde edin, Dakikada sona erme - hareket gerçekleşmediyse bekleyen siparişleri kapatmak için haberden kaç dakika sonra , BEPips - bir emir tetiklenirse ve kaç pip kâr ettikten sonra başabaş için hareket ederse. Eğer takip eden stop = 0 ise, takip olmayacaktır. Sonu ayarlarsanız, kârda ise fiyattan uzak durmak için pip sayısını ayarlayın.

Manüel alım satım için DayOfNews'i sıfıra bırakabilirsiniz, böylece EA her gün belirtilen saat ve dakikada alım satım yapar veya alım satım yaptığınızda günü her gün manüel olarak ayarlayabilirsiniz.

Ayrıca StopLoss'u istediğiniz pip miktarına (puan değil) ayarlamanız gerekir.

SteDistance'ı, bekleyen emirleri istediğiniz zamanda fiyattan herhangi bir mesafeye ayarlayın (30 pips dediniz sanırım).

Süresi dolmasını dakika cinsinden, siparişlerin EA'nın doldurulmadığı takdirde silmeden önce aktif olmasını istediğiniz dakika olarak ayarlayın.

Her neyse, koda bir göz atın ve herhangi bir sorunuz varsa, buraya gönderin veya bana pm atın.

 
diamstar :
Teşekkür ederim. Kitabı bitirdikten sonra ne kadar kötü olursa olsun bir şeyler yazacağım.


İşte ruh budur :)

Eğer denersen, sana yardım edecek insanları bulacaksın.

 
diamstar :
Teşekkür ederim. Kitabı bitirdikten sonra ne kadar kötü olursa olsun bir şeyler yazacağım.


diamstar, doğru yardımı alırsan öğrenmek eğlencelidir. Buna kanmayın ve ilk başta eski Çinlilere benziyorsa buna değmeyeceğine inanın.

Ayrıca, gerçekten yardım etmek istemeyenlerin cesaretini kırmayın. Çok sayıda yardım mevcut, sadece onu bulmanız gerekiyor.

Öğrenmek istiyorsanız size bir tavsiye:

1.Paylaşmak isteyen kişilerle (bilgi, kaynak, kod vb.) iletişimde kalın. onlara ihtiyacın olacak

2. Belgeleri okuyun ve ne okuyacağınızı iyi anlamak için sorular sorun. Her şeyi ezberlemenize gerek yok, sadece neyin mevcut olduğunu ve nerede bulacağınızı bilmek için.

3. Her kodu kendiniz yazmaya çalışırken kendinizi fazla öldürmeyin. Tekerleği yeniden icat etmek gibi.

4. İndirebileceğiniz ücretsiz EA'ları elinize alın ve kod aracılığıyla gidin. Nasıl yapılandırıldığını anlayın, her bir işlevin ne yaptığını anlayın ve ardından nasıl yaptığını inceleyin.

5. Kodunuzda çalışan ve hoşunuza giden kodu ve işlevleri KULLANIN, kodu herhangi bir metin düzenleyicide veya MetaEditor'da komut dosyası olarak kopyalayabilir ve gelecek için anlamlı bir ad altında kaydedebilir veya sadece hangi EA'da beğendiğinizi not edebilirsiniz. ihtiyacın olduğunda bulabilirsin.

Umarım yardımcı olur.

İyi şanlar

 
thrdel :


İşte başlamanıza yardımcı olabilecek bir şey.

Ve bu eski Çin meselesi hakkında, eğer zaten mql ile Çince sopa konuşmuyorsanız. Daha kolay, onunla daha fazla yardım alabilirsiniz ve parlak bir fikriniz varsa, mql bir ton para kazanmanıza yardımcı olacak. Aynı zamanda eğlencelidir.

İşte başlıyoruz:


Haber ticareti ve manuel giriş için uygun hale getirmek için birkaç bit ve kod parçası ekledim. Muhtemelen amacınıza uygun olacaktır.

Bu EA aslında haber ticareti yapmak için tasarlandı, böylece ayın haber gününü, saatini ve dakikasını girin, pip olarak kar elde edin, Dakikada sona erme - hareket gerçekleşmediyse bekleyen siparişleri kapatmak için haberden kaç dakika sonra , BEPips - bir emir tetiklenirse ve kaç pip kâr ettikten sonra başabaş için hareket ederse. Eğer takip eden stop = 0 ise, takip olmayacaktır. Sonu ayarlarsanız, kârda ise fiyattan uzak durmak için pip sayısını ayarlayın.

Manüel alım satım için DayOfNews'i sıfıra bırakabilirsiniz, böylece EA her gün belirtilen saat ve dakikada alım satım yapar veya alım satım yaptığınızda günü her gün manüel olarak ayarlayabilirsiniz.

Ayrıca StopLoss'u istediğiniz pip miktarına (puan değil) ayarlamanız gerekir.

SteDistance'ı, bekleyen emirleri istediğiniz zamanda fiyattan herhangi bir mesafeye ayarlayın (30 pips dediniz sanırım).

Süresi dolmasını dakika cinsinden, siparişlerin EA'nın doldurulmadığı takdirde silmeden önce aktif olmasını istediğiniz dakika olarak ayarlayın.

Her neyse, koda bir göz atın ve herhangi bir sorunuz varsa, buraya gönderin veya bana pm atın.


OP'nin acemi bir programcı olduğunu düşünüyorum. Kodunuzu anlayacağından şüpheliyim.

İlk öğrenmeye başladığınızda kodunuzu anlayabiliyor muydunuz?

 
GumRai :


OP'nin acemi bir programcı olduğunu düşünüyorum. Kodunuzu anlayacağından şüpheliyim.

İlk öğrenmeye başladığınızda kodunuzu anlayabiliyor muydunuz?

Gerçekten minnettarım. Kodu deneyeceğim ve yine de kitabı okuyacağım, böylece her bir parçasını anlayabilirim. Karşılaştığım herhangi bir konuda sizi güncelleyeceğim. teşekkürler
 
GumRai :


OP'nin acemi bir programcı olduğunu düşünüyorum. Kodunuzu anlayacağından şüpheliyim.

İlk öğrenmeye başladığınızda kodunuzu anlayabiliyor muydunuz?


GumRay, kod orada, mql için belgeler mevcut, kodun bazı açıklamaları var ve yardım etmek için buradayız. Dediğim gibi, " Sorularınız varsa buraya yazın veya pm atın".

Bu, tüm cevaplara sahip olduğum anlamına gelmiyor, sadece diamstar öğrenmeye istekliyse yardım etmeye hazırım.

"Kodunuzu anlayacağından şüpheliyim." şimdilik ya da tamamen değil. Ayrıca kod, aradığı şeyin %100'ü olmayabilir (eldeki bilgilerle elimden gelenin en iyisini yaptım) ama bu iyi bir başlangıç.

Pratik örneklerle öğrenmenin ne kadar kolay olduğunu biliyorsun değil mi?

Yeni başlayanlar için bu EA'da çok fazla bilgi olduğunu ve bu konuda çok fazla soru sorulabileceğinin farkındayım ama bu yüzden buradayız, değil mi?

Tabii ki, öğrenirken (hala öğreniyorum) hepsini anlayamadım, en azından ilk seferde hepsini değil ama diamstar yardım istemek için doğru forumu bulmayı başardı ve öğrenmeye kararlı görünüyor.

Ona en iyisini dileyelim ve elimizden geldiğince yardım edelim.

 
thrdel :


GumRay, kod orada, mql için belgeler mevcut, kodun bazı açıklamaları var ve yardım etmek için buradayız. Dediğim gibi, " Sorularınız varsa buraya yazın veya pm atın".

Bu, tüm cevaplara sahip olduğum anlamına gelmiyor, sadece diamstar öğrenmeye istekliyse yardım etmeye hazırım.

"Kodunuzu anlayacağından şüpheliyim." şimdilik ya da tamamen değil. Ayrıca kod, aradığı şeyin %100'ü olmayabilir (eldeki bilgilerle elimden gelenin en iyisini yaptım) ama bu iyi bir başlangıç.

Pratik örneklerle öğrenmenin ne kadar kolay olduğunu biliyorsun değil mi?

Yeni başlayanlar için bu EA'da çok fazla bilgi olduğunu ve bu konuda çok fazla soru sorulabileceğinin farkındayım ama bu yüzden buradayız, değil mi?

Tabii ki, öğrenirken (hala öğreniyorum) hepsini anlayamadım, en azından ilk seferde hepsini değil ama diamstar yardım istemek için doğru forumu bulmayı başardı ve öğrenmeye kararlı görünüyor.

Ona en iyisini dileyelim ve elimizden geldiğince yardım edelim.

Yapılan tüm yardımları gerçekten takdir ediyorum. D kodu ne kadar karmaşık olursa olsun, aylardır bulamamış olabileceğim büyük bir yardım ve okuduğum kitaplar, anlamayı nispeten kolaylaştırıyor. Okumayı öğren n anla b4 anlamlı bir şeyler yaz.