fc2ブログ

09 « 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 11

不労所得で生活できるのか?

主にMT4関連のツールやEAを作ってます。 夢の自動集金マシン(?)は存在するのか・・・。

【RcvPop3Mail】斉藤学氏のメルマガ「よく当たるFX為替レート予想」倍返しだ! 

無料メルマガ「本日のデイトレ・スキャルピング予想」の自動化EAの改善です。

前回の取引で負けた時、一度だけロットを2倍にします。

EAソース(Manabu.mq4)にプロパティを追加します。

.
.
.
//--- input parameters

extern string OrderSetings = "--- Order Setings ---";
extern double Lots = 0.01;
extern double GBPJPYLots = 0.01;

//ここから↓
extern bool Baigaeshi = false; //trueの時、負けたら一度だけロットを2倍にする
//ここまでを追加↑
.
.
.



ロット修正関数を追加します。

.
.
.
//ここから↓
//+------------------------------------------------------------------+
double CalcLots(string cur, double lots)
{
string symbol = CurrencyPreString + cur + CurrencyPostString;

bool bPrevFound = false;

int hstTotal = OrdersHistoryTotal(); //ヒストリーの数
if(Debug)
Print("hstTotal:", hstTotal);

for(int i = hstTotal - 1; i >= 0 ; i--){ //最近の取引から過去に遡る
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol() != symbol)
continue; //通貨ペアが違う

bool bSameMagicNumber = true;
if(MagicNumber != 0)
bSameMagicNumber = (OrderMagicNumber() == MagicNumber);

if(!bSameMagicNumber)
continue; //マジックナンバーが違う

if(Debug)
Print("OrderTicket()", OrderTicket());

if(bPrevFound){
//直前は負けている
if(OrderProfit() > 0)
lots = lots * 2; //その前は勝っているのでロット倍返し
break;
}else{
//直近の取引
if(OrderProfit() >= 0)
break; //勝っているのでロットそのまま
bPrevFound = true; //直近の取引を見つけた(負けトレード)
}
}
return(lots);
}
//ここまでを追加↑
.
.
.



売買関数からロット修正関数を呼ぶように修正します。

.
.
.
//+------------------------------------------------------------------+
bool _OpenBuy(string cur, double dbLimitPrice, double dbStopPrice, string comm)
{
int ticket;
string symbol = CurrencyPreString + cur + CurrencyPostString;

double lots = GeneralOrderLots;
if(cur == "GBPJPY")
lots = GBPJPYOrderLots;
if(lots == 0)
return(false);

//ここから↓
if(Baigaeshi)
lots = CalcLots(cur, lots);
//ここまでを追加↑
.
.
.
//+------------------------------------------------------------------+
bool _OpenSell(string cur, double dbLimitPrice, double dbStopPrice, string comm)
{
int ticket;
string symbol = CurrencyPreString + cur + CurrencyPostString;

double lots = GeneralOrderLots;
if(cur == "GBPJPY")
lots = GBPJPYOrderLots;
if(lots == 0)
return(false);

//ここから↓
if(Baigaeshi)
lots = CalcLots(cur, lots);
//ここまでを追加↑
.
.
.



修正方法がよくわからない方はこれをダウンロードして差し替えてください。

バージョンは2013.9.30.1です。

自動化の方法はこちらの記事で紹介しています。

いつも応援ありがとうございます。m(__)m
スポンサーサイト



2013/10/01 Tue. 10:56 | trackback: -- | comment: -- | edit