コードに関するヘルプが必要です - ページ 2

 
deVries:


私には、あなたがコーディングについて何も知らないように見えます。

そして、あなたはコーディングについて何かを得るために何もしません。

あなたはこれを作るためにどのような試みをしてきましたか?

もし助けが必要なら、それを作るあなたの試みを示してください。

あなたを助けるものはまだ何もありません...

はい。全く初めての経験です。何か参考になる本はありますか?
 
diamstar:
はい。全く初めてのことです。紹介できる本はありますか?

1つのファイルにまとめられた本
ダウンロード - 2 Mb
 
deVries:

1つのファイルにまとめた本
ダウンロード - 2 Mb
ありがとうございました。どんなに悪くても、本を読み終えたら何か書きます。
 
diamstar :
30分


これがあなたが始めるのを助けるかもしれない何かです。

そして、あなたがすでにmqlで中国語の棒を話さない限り、その古代中国のことについて。それはより簡単で、あなたはそれでより多くの助けを得ることができます、そしてあなたが明るい考えを持っているならば、mqlはあなたがたくさんのお金を稼ぐのを助けるでしょう。それも楽しいです。

だからここに行きます:

 //+------------------------------------------------------------------+
//|                                               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);
  }
//+------------------------------------------------------------------+


ニュース取引や手動入力に適したコードをいくつか追加しました。それはおそらくあなたの目的に合うでしょう。

このEAはもともとニュースを取引することを目的としていたので、月のニュース日、時間と分を入力し、ピップで利益を取り、分で有効期限を取ります-移動が起こらなかった場合に保留中の注文を閉じるためにニュースから何分後、BEPips-利益が何ピップスになった後でも、1つの注文がトリガーされ、損益分岐点に移動するために無駄になった場合。トレーリングストップ=0の場合、トレーリングはありません。トレーリングを設定する場合は、利益がある場合に価格から遠ざけるようにピップの数を設定します。

手動取引の場合、DayOfNewsをゼロのままにして、EAが毎日指定された時間と分に取引するようにするか、取引時に毎日手動で日を設定することができます。

また、StopLossを希望するピップ(ポイントではなく)の量に設定する必要があります。

SteDistanceを、保留中の注文が必要な指定時間の価格から任意の距離に設定します(30ピップスと言ったと思います)。

有効期限を分単位で、注文が履行されない場合にEAが注文を削除する前に注文をアクティブにする分数に設定します。

とにかく、コードを見て、質問がある場合は、ここに投稿するか、私に連絡してください。

 
diamstar:
ありがとうございました。どんなに悪くても、本を読み終えたら何か書き上げる。


その意気です :)

やってみれば、きっと助けてくれる人がいるはず

 
diamstar:
ありがとうございました。本を読み終えたら、どんなに悪くても何か書きます。


diamstarさん、勉強は正しい助けを得れば楽しいものです.最初は古代中国語に見えるなら価値がないと信じて引っかからないでください。

また、本当に助けようとしない人に落胆しないでください。助けはいくらでもありますから、それを見つければいいだけです。

もしあなたが学びたいのであれば、彼女のアドバイスがあります。

1.喜んで共有する人たち(知識、リソース、コードなど)と連絡を取り合いましょう。あなたは彼らを必要とするでしょう。

2.ドキュメントを読み、質問をすることで、何を読むべきかをよく理解することができます。すべてを暗記する必要はなく、何がどこにあるのかを知るだけでいい。

3.すべてのコードを自分で書こうとして、自分を殺し過ぎないようにしましょう。車輪の再発明をするようなものです。

4.無料でダウンロードできるEAを手に入れ、そのコードを徹底的に調べましょう。どのように構成されているかを理解し、各関数が何をするかを理解し、そしてそれがどのように行うかを研究してください。

5.テキストエディタやMetaEditorのスクリプトでコードをコピーして、将来のために 意味のある名前で保存したり、必要なときに見つけられるように、どのEAで何が好きかをメモしておくとよいでしょう。

それが役立つことを願っています。

幸運を祈ります。

 
thrdel:


ここに、あなたが始めるのに役立つかもしれないものがあります。

そして、その古代中国語のことですが、あなたがすでに中国語を話せるのでなければ、mqlにこだわってください。そのほうが簡単だし、より多くの助けを得ることができる。そして、もしあなたがすばらしいアイディアを持っているなら、mqlはあなたがたくさんのお金を稼ぐのに役立つだろう。また、楽しいです。

だから、ここに私達は行く。


私はそれがニューストレードとマニュアルエントリのために適したようにコードのいくつかのビットとピースを追加しました。それはおそらくあなたの目的に合うでしょう。

このEAはもともとニュース取引を目的としていたので、ニュースの日、時間、分を入力し、利益をpipsで取り、Expirationを分単位で-何分後に保留中の注文を閉じるか、動きがなかったらBEPips-一つの注文がトリガーされても、何pips後に利益を出すために動くか、でした。トレーリングストップ= 0の場合、トレーリングはありません。トレーリングを設定する場合は、利益が出ている場合に価格から何pips離すかを設定します。

手動取引の場合、DayOfNewsを0にしておくと、EAは毎日指定した時間と分に取引しますし、手動で毎日取引する日を設定することもできます。

また、StopLossを希望するpips(ポイントではない)の量に設定する必要があります。

SteDistanceを指定した時間の価格からの距離に設定し、保留中の注文を出します。

Expiration in minutes は、注文が成立しない場合にEAがそれを削除する前に、何分アクティブにしておきたいかを設定します。

とにかく、このコードに目を通してみて、何か質問があれば、ここに書き込むか、私に連絡してください。


OPは初心者のプログラマーだと思います。あなたのコードを理解できるとは思えません。

あなたが最初に勉強し始めたとき、あなたのコードを理解することができたでしょうか?

 
GumRai:


OPは初心者のプログラマーだと思います。彼/彼女があなたのコードを理解することはないでしょう。

あなたが勉強を始めたばかりの頃、あなたのコードを理解することができたでしょうか?

本当にありがとうございます。 私はコードを試してみて、まだ本を読んで、隅々まで理解できるようにしたいと思います。何か問題があったら、また報告します。ありがとうございます。
 
GumRai:


OPは初心者のプログラマーだと思います。あなたのコードを理解できるとは思えません。

あなたが勉強を始めたばかりの頃、あなたのコードを理解することができたでしょうか?


GumRayさん、コードはありますし、mqlのドキュメントもありますし、コードには説明もありますし、私たちもお手伝いしますよ。そして、私たちは手助けをします。「何か 質問があれば、ここに書き込むか、私に 連絡してください」と言いました。

それは、私がすべての答えを持っているということではなく、diamstarが学ぶ気があるのなら、私は喜んで手助けをするということです。

" I doubt that he/she will understand your code." 今のところ、あるいは完全にそうではないかもしれません。また、コードは彼/彼女が探しているもの100%ではないかもしれません(私は利用可能な情報を考えると最善を尽くしました)しかし、それは良いスタートです。

実践的な例で学ぶことがどれほど簡単か、あなたは知っていますよね?

あのEAには初心者のための情報がたくさんあって、質問も多いだろうけど、だからこそ私たちはここにいるんでしょう?

しかし、diamstarは、助けを 求めるために適切なフォーラムを見つけることができ、学ぶことを決意しているようです。

しかし、diamstarは、助けを求めるために適切なフォーラムを見つけ、学ぶ決意をしたようです。

 
thrdel:


GumRayさん、コードはありますし、mqlのドキュメントもありますし、コードには説明もありますし、私たちはここでお手伝いします。そして、私たちは手助けをします。「何か 質問があれば、ここに書き込むか、私に 連絡してください。

それは、私がすべての答えを持っているということではなく、diamstarが学ぼうとするならば、私は喜んで手助けをするということです。

"I doubt that he/she will understand your code." 今のところ、あるいは完全にそうではないかもしれません。また、コードは彼/彼女が探しているもの100%ではないかもしれません(私は利用可能な情報を考えると最善を尽くしました)しかし、それは良いスタートです。

実践的な例で学ぶことがどれほど簡単か、あなたは知っていますよね?

あのEAには初心者のための情報がたくさんあって、質問も多いだろうけど、だからこそ私たちはここにいるんでしょう?

しかし、diamstarは、助けを求めるために適切なフォーラムを見つけることができ、学ぶことを決意しているようです。

この人の成功を祈りつつ、できる限り手助けをしていきましょう。

本当にありがとうございます。どんなに複雑なコードであっても、数ヶ月では思いつかないような大きな助けになりますし、今読んでいる本が理解を比較的容易にしてくれています。意味のあることを書くには、読むこと、理解することを学ばなければなりません。