FX最強ツール サイクル理論で稼ぎます!

サイクル理論でボトムを見極め、そこから自動売買を稼働させ、確実に利益を積み上げていきます。

ブログ名

FX サイクル理論 自作EA稼働~~~

こんにちは、兼業トレーダのタケシです。

 

疲れました~~~~~~~~~~~~~

動けない入院患者さんのために、出張レントゲン撮影業務を担当してきました。

週明けなので件数の多いこと!!!

件数もさることながら、1/3は新型コロナウイルス感染対策での撮影・・・

さすがに激務すぎ!!!

来週か再来週有給休暇取ってやるかなブタども!!!!

 

それでは為替にいきましょう。

 

去年もさることながら、今年も仕事がヤバそうなので

週足サイクル本数・週足サイクルトップ・日足サイクル回数を参考にして

自作EAを稼働させてみようと思います。

 

f:id:kisamashiketa:20210208202457j:plain

ニュージーランドドル円の15分足チャートになります。

週足サイクル本数21本目中。

週足サイクルトップは今週か??

日足サイクル回数3回目中。

上記より、これからは下降の可能性が高いと予想し、売りEAを稼働しました。

 

基本設定はマーチンゲール

エントリーはSMA(10)をローソク足の終値が下抜けたとき

エグジットは利食い20PIPS、損切り30PIPS

でお試し中です。

 

//+---------------------------------------------------------------------+
// パラメーター設定
//+---------------------------------------------------------------------+

input string C0="---- Base Setting ----";
input int MAGIC = 20210205;
input int Slippage=3;
input int MaxSpread=50;


//取引ロット関連
input int MaxPosition=1;
input double BaseLots=0.10;
input int takeprofit=20;
input int stoploss=30;

//マーチンゲール
input int LotsAdjustPer=3;//最大マーチンゲール実施回数
input double LotsAdjustPer2=2.00;//マーチン倍率

//その他項目
double Lots;

input string C1="フィルター|移動平均線とローソク足(順張り)";
int TimeScale1 = 15;
int Entry1 = 1;//1_直近確定の足、2_二本前、3_三本前
input int MaType1 = 0; //平均線種類
input int MA1_1 = 10; //移動平均線期間
input int PriceType1 = 0; //価格タイプ


//+---------------------------------------------------------------------+
// 一般関数
//+---------------------------------------------------------------------+

double AdjustPoint(string Currency)//ポイント調整
{
int Symbol_Digits=(int)MarketInfo(Currency,MODE_DIGITS);
double Calculated_Point=0;
if (Symbol_Digits==2 || Symbol_Digits==3)
{
Calculated_Point=0.01;
}
else if (Symbol_Digits==4 || Symbol_Digits==5)
{
Calculated_Point=0.0001;
}
else if (Symbol_Digits==0)
{
Calculated_Point=1;
}
return(Calculated_Point);
}

int AdjustSlippage(string Currency,int Slippage_pips )//スリッページ調整
{
int Calculated_Slippage=0;
int Symbol_Digits=(int)MarketInfo(Currency,MODE_DIGITS);
if (Symbol_Digits==2 || Symbol_Digits==3)
{
Calculated_Slippage=Slippage_pips;
}
else if (Symbol_Digits==4 || Symbol_Digits==5)
{
Calculated_Slippage=Slippage_pips*10;
}
return(Calculated_Slippage);
}

int LongPosition()//ロングポジション数を取得
{
int buys=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_BUY) buys++;
}
}
return(buys);
}

int ShortPosition()//ショートポジション数を取得
{
int sells=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_SELL) sells++;
}
}
return(sells);
}

//+---------------------------------------------------------------------+
// エントリ関連関数
//+---------------------------------------------------------------------+

//ポジションエントリ関数
void OpenOrder(int EntryPosition)
{
int res;
bool Modified;
double SL;
double TP;
int SLP=AdjustSlippage(Symbol(),Slippage );

//ロットサイズ調整
Lots=LotsAdjustment(LotsAdjustPer,LotsAdjustPer2);//マーチンゲール

if( EntryPosition == 1 ) //買いの場合のエントリ条件
{
res=OrderSend(Symbol(),OP_BUY,Lots ,Ask,SLP,0,0,"Sell only 20210201",MAGIC,0,Red);
if (OrderSelect(res,SELECT_BY_TICKET)==true)
{
if (stoploss!=0) SL=OrderOpenPrice()-stoploss*AdjustPoint(Symbol());
if (takeprofit!=0) TP=OrderOpenPrice()+takeprofit*AdjustPoint(Symbol());
}
if(SL!=0 || TP!=0) Modified=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red);
}
else if(EntryPosition == -1 ) //---- 売りエントリ
{
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,SLP,0,0,"Sell only 20210201",MAGIC,0,White);
if(OrderSelect(res,SELECT_BY_TICKET)==true)
{
if(stoploss!=0) SL=OrderOpenPrice()+stoploss*AdjustPoint(Symbol());
if(takeprofit!=0) TP=OrderOpenPrice()-takeprofit*AdjustPoint(Symbol());
}
if(SL!=0 || TP!=0) Modified=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,White);
}
return;
}

//ポジション数調整関数
double LotsAdjustment(int MaxMartin, double Multi)
{
int Loss_Count = 0;
for (int i= OrdersHistoryTotal()-1;i>=0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
if (OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol())
{
if(OrderProfit()<=0)
{
Loss_Count++;
}
else if(OrderProfit()>0)
{
break;
}
}
}
}
if (Loss_Count>=MaxMartin)
{
Loss_Count=MaxMartin;
}
double LotSize= BaseLots*MathPow(Multi,Loss_Count);
if (LotSize>=MarketInfo(Symbol(),MODE_MAXLOT))
{
LotSize=MarketInfo(Symbol(),MODE_MAXLOT);
}
return(LotSize);
}

//+---------------------------------------------------------------------+
// エグジット関連関数
//+---------------------------------------------------------------------+

//ポジションクローズ関数
void CloseOrder(int ClosePosition)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
int res;
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL && (ClosePosition==-1 || ClosePosition==0 )) //売りポジションのクローズ
{
res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10,Silver);
}
else if(OrderType()==OP_BUY && (ClosePosition==1 || ClosePosition==0 ) ) //買いポジションのクローズ
{
res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10,Silver);
}
}
}
}
}

//+---------------------------------------------------------------------+
//  インジケーター
//+---------------------------------------------------------------------+

//1-4 フィルター|移動平均線とローソク足(終値)の位置関係(順張り)
int Indicator1_4(int i,int TimeScale,int LineType,int MaPer, int PType)
{
double Ma1=iMA(NULL,TimeScale,1,0,0,0,i);
double Ma2=iMA(NULL,TimeScale,MaPer,0,LineType,PType,i);

int ret=0;
if (Ma1>Ma2)
{
ret=1;
}
else if (Ma1<Ma2)
{
ret=-1;
}
return(ret);
}

//+---------------------------------------------------------------------+
// ティック毎の処理
//+---------------------------------------------------------------------+
void start()
{


// ニューバーの発生直後以外は取引しない
static datetime bartime=Time[0];
if (Time[0]==bartime) return;
bartime=Time[0];

//各種パラメーター取得
int EntryBuy=0;
int EntrySell=0;
int ExitBuy=0;
int ExitSell=0;

int LongNum=LongPosition();
int ShortNum=ShortPosition();

//クローズ判定
//買いのクローズロジックは選択されていません
//売りのクローズロジックは選択されていません

//エントリ基準取得
int Strtagy1=Indicator1_4(Entry1,TimeScale1,MaType1,MA1_1,PriceType1);
int TotalNum=ShortNum+LongNum;

//エントリ判定
//買いエントリのロジックは選択されていません
if*1
{
EntrySell=1;
}

//オープン処理
if( ((Ask-Bid)/AdjustPoint(Symbol())) < MaxSpread )
{
if(EntryBuy!=0)
{
OpenOrder(1);
}
if(EntrySell!=0)
{
OpenOrder(-1);
}
}
}

 

結果はいかに? 

 

それでは2021年、いかなる危機が世界を襲って来たとしても、皆さんは稼ぎに稼ぎまくって金銭的勝者になってくださいね。

 

ではまたです。

 

めざせ!ランキング1位にご協力をお願いいたします。

にほんブログ村 為替ブログへ
FXに関する人気ブログはこちらですよ(o^―^o)

 

*1:TotalNum<MaxPosition && Strtagy1==-1