1,000人限定!!企画に参加してEAをGetする公式ラインに登録して
プレゼントをもらう

【MQL】ナンピンマーチンEA【上級編】

MQL MT4 ナンピン マーチンゲール EAMT4EA作成

ナンピンマーチンEA

ナンピンマーチンEAというのは、ナンピンとはポジションを増やしていく方法です。

漢字で書くと「難平」です。これは、難を平らにならすという意味で、転じて愚か者との意味合いもあります。

マーチンゲールというのはカジノでよく使われる手法で、負けたら倍々に掛け金を増やしていく手法です。

ナンピンとマーチンゲールを組み合わせたナンピンマーチンというEAの種類があります。

今回はEAを作成したいと思います。

  • 移動平均線のゴールデンクロスとデッドクロス
  • ナンピンマーチンでポジションを取る

メタエディタ(MetaEditor)を立ち上げる

メタエディタ(MetaEditor)を立ち上げましょう。今回は名前を「Nampin-Martingale-EA」で作成します。

パラメーターを記述する

パラメーターを記述しましょう。

OnTick()関数を記述する

allCloseの記述

コンパイル

ソースコード全体

Nampin-Martingale-EAのソースコード全体は以下に記載しています。

//+------------------------------------------------------------------+
//|                                         Nampin-Martingale-EA.mq4 |
//|                     Copyright 2020, FX-EA System Project Creator |
//|                        https://creator.fx-ea-system-project.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, FX-EA System Project Creator"
#property link      "https://creator.fx-ea-system-project.com/"
#property version   "1.00"
#property strict

input double lots = 0.01;//ロット
input double slippage = 3;//スリッページ
input int Fast_MA = 5;//短期移動平均線
input int Slow_MA = 15;//長期移動平均線
input double nampin = 5;//ナンピン幅
input int maxnampin = 5;//最大ナンピン数
input int MagicNumber = 12345; //マジックナンバー
static int TicketNumber;//チケットナンバー
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   int cnt;
	int CurrentPosition;//ポジション数
	double profit;//損益

	CurrentPosition=-1;//ポジション数ゼロ
	for(cnt=0;cnt<OrdersTotal();cnt++)
	{
		if(OrderSelect(cnt,SELECT_BY_POS)==false)continue;
		if(OrderMagicNumber()!=MagicNumber)continue;
		profit=profit+OrderProfit();//損益
		if(OrderMagicNumber()==MagicNumber)CurrentPosition=cnt;
	}
	if(CurrentPosition==-1)//ポジションを持っていない場合
	{
		double kako_Fast,kako_Slow;//過去のMA
		double gen_Fast,gen_Slow;//現在のMA
		
		kako_Fast=iMA(NULL,0,Fast_MA,0,MODE_SMA,PRICE_CLOSE,1);//過去の短期MA
		kako_Slow=iMA(NULL,0,Slow_MA,0,MODE_SMA,PRICE_CLOSE,1);//過去の長期MA
		gen_Fast=iMA(NULL,0,Fast_MA,0,MODE_SMA,PRICE_CLOSE,0);//現在の短期MA
		gen_Slow=iMA(NULL,0,Slow_MA,0,MODE_SMA,PRICE_CLOSE,0);//現在の長期MA

		//ゴールデンクロス時
		if(kako_Fast < kako_Slow && gen_Fast >= gen_Slow)
		{
			TicketNumber=OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,0,0,"buy",MagicNumber,0,Red);
		}
		//デッドクロス時
		if(kako_Fast > kako_Slow && gen_Fast <= gen_Slow)
		{
			TicketNumber=OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,0,0,"sell",MagicNumber,0,Blue);
		}
	}
	else//複数ポジションを持っている場合
	{
		OrderSelect(CurrentPosition,SELECT_BY_POS);
		if(OrderSymbol()==Symbol())
		{
			if(OrderType()==OP_BUY)
			{
				if(OrdersTotal()<(maxnampin+1)&&Close[0]<(OrderOpenPrice()-nampin*Point)) { TicketNumber=OrderSend(Symbol(),OP_BUY,OrderLots()*2,Ask,slippage,0,0,"buy2",MagicNumber,0,Blue); } if(profit>10)
				{
					allClose(Green);//すべてロングポジションを決済
				}
			}

			if(OrderType()==OP_SELL)
			{
				if(OrdersTotal()<(maxnampin+1)&&Close[0]>(OrderOpenPrice()+nampin*Point))
				{
					TicketNumber=OrderSend(Symbol(),OP_SELL,OrderLots()*2,Bid,slippage,0,0,"sell2",MagicNumber,0,Red);
				}
				if(profit>10)
				{
					allClose(Yellow);//すべてショートポジションを決済
				}
			}
		}

	}
  }
//+------------------------------------------------------------------+
//すべて決済する関数
void allClose(color clr)
{
	int i;
	for(i=OrdersTotal()-1;i>=0;i--)
	{
		if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
			continue;
		if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)
			continue;
		if(OrderType()==OP_BUY)
			OrderClose(OrderTicket(),OrderLots(),Bid,NormalizeDouble(slippage,0),clr);
		if(OrderType()==OP_SELL)
			OrderClose(OrderTicket(),OrderLots(),Ask,NormalizeDouble(slippage,0),clr);
	}
}

Copy

まとめ

1,000人限定でFXの自動売買のEAを無料で配布中!!

FX-EA System Projectでは、

【1,000人限定で無料でFXの自動売買のEAを配布中】

です!!

・毎日チャートを見てるのに全く稼げなかった

・コンサルや塾に入ったけど全く稼げなかった

・裁量トレードは難しくて挫折した

・ツールやシステムを購入したが全く稼げなかった

・時間がなくて裁量トレードを行える時間がない

・自動で楽に稼ぎたい

という風に思っている方はこの企画はおすすめです。

フォワードテスト・バックテストを

しっかり行ったパフォーマンスの良いEAを提供中です!!

また、どんどん新しいEAも随時無料配布します!!

人数限定なので早いものがちです!!

もしFX-EA System Projectに興味があれば

是非参加してください。

MT4EA作成 上級編
\記事が役に立ったらシェアしてね/
FX-EA System Projectをフォローする
FX-EA System Project Creator

コメント

タイトルとURLをコピーしました