6. トレード用EAの作成

前回までに学習した結果をファイルに保存しました。ここからはいよいよトレード用のEAの作成方法について説明します。

新規でMovingAverageTradeという名前でEAを作成してください。

再び、MovingAverage.mq4のソースコードをコピーしてください。

買いだけのトレードにし、ロット数を固定する

学習の時と同じように買いだけのアルゴリズムに変更してください。

void CheckForOpen()
  {
   double ma;
   int    res;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//--- sell conditions

/* 
   if(Open[1]>ma && Close[1]<ma)
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
      return;
     }
*/
//--- buy conditions
   if(Open[1]<ma && Close[1]>ma)
     {     
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
      return;
     }
//---
  }

ロット数も学習の時と同じように固定にします。

double LotsOptimized()
  {
   return 0.1; 
   
 double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//--- select lot size
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//--- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
           {
            Print("Error in history!");
            break;
           }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
            continue;
         //---
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//--- return lot size
   if(lot<0.1) lot=0.1;
   return(lot);
  }

学習結果を呼び出す

それでは学習結果を使ったトレード用のソースコードの書き方を説明していきます。最初にIzelライブラリをインクルードしましょう。

//+------------------------------------------------------------------+
//|                                               Moving Average.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Moving Average sample expert advisor"

#include <Izel.mqh>

次に学習の時にファイルに保存しておいた学習結果を読み込みます。

int handle;
string FILE_NAME = "AIparam.pcl";
 
void OnInit()
   {
   handle = IZEL_open();   
   IZEL_load(handle, FILE_NAME);
   }

OnInit()でIZEL_open()をし、openしたハンドラでIZEL_load()にファイル名を指定すれば、学習結果が読み込まれます。

Copyright (C) izel.cloud-line.com All Rights Reserved.