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

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

ブログ名

自作EAにてドル円・クロス円の売りしてみます!(ランキング1位にご協力を)

こんわんば 兼業トレーダのタケシです。

今週は自作EAを稼働させ、売りOnly自動売買してみようと思います。

ただこのEAの出来が心配ですが・・・・

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

extern string C0="---- Base Setting ----";
extern int MAGIC = 00001;
extern int Slippage=10;


//取引ロット関連
extern int MaxPosition=1;
extern double BaseLots=0.30;
extern int takeprofit=15;
extern int stoploss=100;

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

//その他項目
double Lots;

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


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

double AdjustPoint(string Currency)//ポイント調整
{
int Symbol_Digits=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;
}
return(Calculated_Point);
}

int AdjustSlippage(string Currency,int Slippage_pips )//スリッページ調整
{
int Calculated_Slippage=0;
int Symbol_Digits=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 EA 3",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 EA 3",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 && *1
{
EntrySell=1;
}

//オープン処理
if(EntryBuy!=0)
{
OpenOrder(1);
}
if(EntrySell!=0)
{
OpenOrder(-1);
}
}

仕事中にこのEAがどんだけ稼いでくれるか楽しみです!

ではまた

 

海外FX口座で勝負したい方はキャッシュバックサイトから口座開設するとちょーーーーお得ですよ!

 

*1:ClosePosition==-1 && OrderProfit()>0) || ClosePosition==0) ) //売り利益ポジションのみクローズ
{
res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10,Silver);
}
else if(OrderType()==OP_BUY && ((ClosePosition==1 && OrderProfit()>0) || ClosePosition==0) ) //買い利益ポジションのクローズ
{
res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10,Silver);
}
}
}
}
}

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

//1-13 シグナル|ローソク足移動平均遅行線順張りクロス
int Indicator1_13(int i,int TimeScale,int LineType,int MaPer,int DelayPer, int PType)
{
int ret=0;
double Ma1=iMA(NULL,TimeScale,1,0,LineType,PType,i);
double Delay=iMA(NULL,TimeScale,MaPer,0,LineType,PType,i+DelayPer);
double Ma1_1=iMA(NULL,TimeScale,MaPer,0,LineType,PType,i+1);
double Delay_1=iMA(NULL,TimeScale,MaPer,0,LineType,PType,i+DelayPer+1);
if ( Ma1>Delay && Ma1_1<Delay_1 )
{
ret=1;
}
else if( Ma1<Delay && Ma1_1>Delay_1 )
{
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_13(Entry1,TimeScale1,MaType1,MA1_1,MA1_delay,PriceType1);
int TotalNum=ShortNum+LongNum;

//エントリ判定
//買いエントリのロジックは選択されていません
if((TotalNum<MaxPosition && Strtagy1==-1