日経平均 シグナル -634ページ目

プログラム なう 20100913

昨日貼っていたプログラムから少し日数が経って遊んでいたプログラムを2個貼りました。


MAとCCIを組み合わせてみました。


//+------------------------------------------------------------------+
//| EMA CCI BUY.mq4 |
//| Copyright ゥ 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net "

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//変数の宣言
int cnt, CurrentPosition;
int Ticket;
double kakoa,gennzaia;
double kakob,gennzaib;
double kakoc,gennzaic;
double kakod,gennzaid;
double kakoe,gennzaie;

// オーダーチェック(ポジションなどのデータ)
CurrentPosition=-1;
for(cnt=0;cnt<OrdersTotal();cnt++){
OrderSelect(cnt,SELECT_BY_POS);
if(OrderSymbol() == Symbol()) CurrentPosition=cnt;
}

//一時間前のA日線
kakoa = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1);
//一時間前のB日線
kakob = iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,1);
//過去のC日線
kakoc = iMA(NULL,0,3,0,MODE_EMA,PRICE_CLOSE,1);
//過去のD日線
kakod = iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,1);
//過去のCCI
kakoe = iCCI(NULL,0,10,PRICE_CLOSE,1);

//現在のA日線
gennzaia = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0);
//現在のB日線
gennzaib = iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,0);
//現在のC日線
gennzaic = iMA(NULL,0,3,0,MODE_EMA,PRICE_CLOSE,0);
//現在のD日線
gennzaid = iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,0);
//現在のCCI
gennzaic = iCCI(NULL,0,10,PRICE_CLOSE,0);

// ポジションチェック ポジション無し
if(CurrentPosition == -1)
{


//もしA日線がB日線を下から上にクロスしたら
if( kakoa <= kakob && gennzaia > gennzaib)
//買い条件





{
//買いポジションを取る
Ticket = OrderSend(Symbol(), OP_BUY, 1, Bid, 3, 0, 0, "Buy", 0, 0, Blue);

}




}
// ポジション有り
else
{

//ポジションの選択
OrderSelect(Ticket,SELECT_BY_POS);

//ポジションの確認
if(OrderSymbol() == Symbol())
{
//もし買いポジションだったら
if(OrderType()==OP_BUY)
{
//もしC日線がD日線を下から上にクロスしたら もしくは
if( kakoc>= kakod && gennzaic < gennzaid || kakoe >100 && gennzaie<100)





{
//手仕舞い
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}

}
}


}
return(0);
}




// the end.
//+------------------------------------------------------------------+



MAとRSIを組み合わせてみました。



//+------------------------------------------------------------------+
//| SMA x4 RSI BUY.mq4 |
//| Copyright ゥ 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net "

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

//変数の宣言
int cnt, CurrentPosition;
int Ticket;
double kakoa,gennzaia;
double kakob,gennzaib;
double kakoc,gennzaic;
double kakod,gennzaid;
double kakoe,gennzaie;


// オーダーチェック(ポジションなどのデータ)
CurrentPosition=-1;
for(cnt=0;cnt<OrdersTotal();cnt++){
OrderSelect(cnt,SELECT_BY_POS);
if(OrderSymbol() == Symbol()) CurrentPosition=cnt;
}


//一時間前のA日線
kakoa = iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,1);
//一時間前のB日線
kakob = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,1);
//一時間前のC日線
kakoc = iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,1);
//一時間前のD日線
kakod = iMA(NULL,0,75,0,MODE_SMA,PRICE_CLOSE,1);
//過去のRSI
kakoe = iRSI(NULL,0,14,PRICE_CLOSE,1);



//現在のA日線
gennzaia = iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0);
//現在のB日線
gennzaib = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,0);
//現在のC日線
gennzaic = iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,0);
//現在のD日線
gennzaid = iMA(NULL,0,75,0,MODE_SMA,PRICE_CLOSE,0);
//現在のRSI
gennzaie = iRSI(NULL,0,14,PRICE_CLOSE,0);



// ポジションチェック ポジション無し
if(CurrentPosition == -1)
{

//RSI数値
if( gennzaie >40 && kakoe<=40)
{
//買いポジションを取る
Ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0, "Buy", 0, 0, Blue);

}


}
// ポジション有り
else
{

//ポジションの選択
OrderSelect(Ticket,SELECT_BY_POS);

//ポジションの確認
if(OrderSymbol() == Symbol())
{
//もし買いポジションだったら
if(OrderType()==OP_BUY)
{
// RSI数値
if(kakoe>=60&& gennzaie <60)
{
//手仕舞い
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}

}
}


}
return(0);
}




// the end.
//+------------------------------------------------------------------+



こんなレベルなので、

自作EA完成まではかなり遠いっす。



本日は、

検証していたEAを有効活用しやすいように整理しようと思いPC内で整理整頓しています。


プログラム なう 20100912

昨日はEA探しをしていた。

後日、再検証しようと思ったEAがいくつか見つかった。

市販されていたEAみたいな名前のEAもあった。



以前は作業しやすくするために売り&買いを分離してトレーリングストップやリミットを外していたが、

なかなかうまく進まないので,,,,,


損益カーブをきれいな右肩上がりにする為には必要な機能らしい。


ストップ、リミット、トレーリングストップ、リスクマネジメントも装備して作業することにした。

メタトレードのサンプルプログラムMAとMACDを合成してRSIとCCIも合成してみた。


コンパイルしてエラーは発生してない。


パラメータの設定や条件式考えて作業を進めていこうと思っている。

思うように作業がすすまねー,,,,,



EA作業を始めた頃に遊んでいたプログラムを貼っておきます。



//+------------------------------------------------------------------+
//| SMA x4 BUY.mq4 |
//| Copyright ゥ 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net "

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//変数の宣言
int cnt, CurrentPosition;
int Ticket;
double kakoa,gennzaia;
double kakob,gennzaib;
double kakoc,gennzaic;
double kakod,gennzaid;

// オーダーチェック(ポジションなどのデータ)
CurrentPosition=-1;
for(cnt=0;cnt<OrdersTotal();cnt++){
OrderSelect(cnt,SELECT_BY_POS);
if(OrderSymbol() == Symbol()) CurrentPosition=cnt;
}

//一時間前のA日線
kakoa = iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,1);
//一時間前のB日線
kakob = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,1);

//現在のA日線
gennzaia = iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0);
//現在のB日線
gennzaib = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,0);


//一時間前のC日線
kakoc = iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,1);
//一時間前のD日線
kakod = iMA(NULL,0,75,0,MODE_SMA,PRICE_CLOSE,1);

//現在のC日線
gennzaic = iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,0);
//現在のD日線
gennzaid = iMA(NULL,0,75,0,MODE_SMA,PRICE_CLOSE,0);


// ポジションチェック ポジション無し
if(CurrentPosition == -1)
{
//移動平均線が上向きである時
if(kakoa < gennzaia && kakob < gennzaib)
//もしA日線がB日線を下から上にクロスしたら
if( kakoa < kakob && gennzaia >= gennzaib)
{
//買いポジションを取る
Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Blue);

}




}
// ポジション有り
else
{

//ポジションの選択
OrderSelect(Ticket,SELECT_BY_POS);

//ポジションの確認
if(OrderSymbol() == Symbol())
{
//もし買いポジションだったら
if(OrderType()==OP_BUY)
{
//もしC日線がD日線を上から下にクロスしたら
if( kakoc > kakod && gennzaic <= gennzaid)
{
//手仕舞い
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}

}
}


}
return(0);
}




// the end.
//+------------------------------------------------------------------+






//+------------------------------------------------------------------+
//| SMA SELL.mq4 |
//| Copyright ゥ 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net "

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//変数の宣言
int cnt, CurrentPosition;
int Ticket;
double kakoa,gennzaia;
double kakob,gennzaib;
double kakoc,gennzaic;
double kakod,gennzaid;

// オーダーチェック(ポジションなどのデータ)
CurrentPosition=-1;
for(cnt=0;cnt<OrdersTotal();cnt++){
OrderSelect(cnt,SELECT_BY_POS);
if(OrderSymbol() == Symbol()) CurrentPosition=cnt;
}

//一時間前のA日線
kakoa = iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,1);
//一時間前のB日線
kakob = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,1);

//現在のA日線
gennzaia = iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0);
//現在のB日線
gennzaib = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,0);


//一時間前のC日線
kakoc = iMA(NULL,0,75,0,MODE_SMA,PRICE_CLOSE,1);
//一時間前のD日線
kakod = iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,1);

//現在のC日線
gennzaic = iMA(NULL,0,75,0,MODE_SMA,PRICE_CLOSE,0);
//現在のD日線
gennzaid = iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,0);


// ポジションチェック ポジション無し
if(CurrentPosition == -1)
{
//移動平均線が下向きの時
if(kakoa > gennzaia && kakob > gennzaib)
//もしA日線がB日線を上から下にクロスしたら
if( kakoa > kakob && gennzaia <= gennzaib)
{
//売りポジションを取る
Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue);

}




}
// ポジション有り
else
{

//ポジションの選択
OrderSelect(Ticket,SELECT_BY_POS);

//ポジションの確認
if(OrderSymbol() == Symbol())
{
//もし売りポジションだったら
if(OrderType()==OP_SELL)
{
//もしC日線がD日線を下から上にクロスしたら
if( kakoc < kakod && gennzaic >= gennzaid)
{
//手仕舞い
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
}

}
}


}
return(0);
}




// the end.
//+------------------------------------------------------------------+


プログラム なう 20100906

メタトレーダーのサンプルプログラムを使用してそれぞれにオシレータを付加した。


MAに、MACD RSI CCI を付加した。

MACDに、RSI CCIを付加した。


で条件式を変更したり付加したりして作業しているんだけど、

なかなか良い成績にならない。


うまくいかないもんだ。


売買条件式を書いていく作業効率を考えて....

売買プログラムを、買いプログラム&売りプログラムに分離した。


買いプログラムから作業してみることにした。


自作プログラム、

うまく書けてバックテストの成績が良くなったら,,,,うれしいだろうなぁ

プログラム なう 20100902



おぜっちゃんのブログは...... border=




おぜっちゃんのブログは...... border=


メタトレーダー4に装備されているサンプルプログラムです。




MACD Sample.mq4






おぜっちゃんのブログは...... border=





おぜっちゃんのブログは...... border=



//+------------------------------------------------------------------+

//| MACD Sample.mq4 |

//| Copyright ゥ 2005, MetaQuotes Software Corp. |

//| http://www.metaquotes.net/
|

//+------------------------------------------------------------------+


extern double TakeProfit = 50;

extern double Lots = 0.1;

extern double TrailingStop = 30;

extern double MACDOpenLevel=3;

extern double MACDCloseLevel=2;

extern double MATrendPeriod=26;


//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

double MacdCurrent, MacdPrevious, SignalCurrent;

double SignalPrevious, MaCurrent, MaPrevious;

int cnt, ticket, total;

// initial data checks

// it is important to make sure that the expert works with a normal

// chart and the user did not make any mistakes setting external

// variables (Lots, StopLoss, TakeProfit,

// TrailingStop) in our case, we check TakeProfit

// on a chart of less than 100 bars

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit less than 10");

return(0); // check TakeProfit

}

// to simplify the coding and speed up access

// data are put into internal variables

MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);

MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);

SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);


total=OrdersTotal();

if(total<1)

{

// no opened orders identified

if(AccountFreeMargin()<(1000*Lots))

{

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

// check for long position (BUY) possibility

if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious
MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

// check for short position (SELL) possibility

if(MacdCurrent>0 && MacdCurrentSignalPrevious &&

MacdCurrent>(MACDOpenLevel*Point) && MaCurrent
{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

return(0);

}

// it is important to enter the market correctly,

// but it is more important to exit it correctly...

for(cnt=0;cnt
{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // check for opened position

OrderSymbol()==Symbol()) // check for symbol

{

if(OrderType()==OP_BUY) // long position is opened

{

// should it be closed?

if(MacdCurrent>0 && MacdCurrentSignalPrevious &&

MacdCurrent>(MACDCloseLevel*Point))

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position

return(0); // exit

}

// check for trailing stop

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()
{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // go to short position

{

// should it be closed?

if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&

MacdPrevious(MACDCloseLevel*Point))

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position

return(0); // exit

}

// check for trailing stop

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

// the end.

プログラム なう 20100901



おぜっちゃんのブログは...... border=
Moving Average.mq4


サンプルプログラムの初期設定でバックテストをすると....


10000通貨 0.10ロットです






おぜっちゃんのブログは...... border=



usd/jpy H1 でバックテストしました。

プログラム なう 20100831

昨日はユロ円スキャルピングしていてEA系作業はしなかった。


MT4には2個サンプルプログラムがある。
MAを使用したプログラムとMACDを使用したプログラムなんだけど…
このプログラムを使用してEAを作る事にした。
「MA+RSI+CCI」
「MACD+?」
MACDに関しては何を組み合わせるか未定


プログラム初心者なので…、
ちゃんとできるかどうか微妙です。



売買が成立しないEAのプログラムを眺めたりしています。

・なんで作動しないのか?
・使える部分はないか?
・改良できないのか?

現在166個あります。
ひとつずつ見ていきます。



MAのサンプルプログラムを貼っておきます。

これをベースにRSI+CCIを付け加えていこうかなぁ...



Moving Average.mq4


//+------------------------------------------------------------------+
//| Moving Average.mq4 |
//| Copyright ゥ 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define MAGICMA 20050610

extern double Lots = 0.1;
extern double MaximumRisk = 0.02;
extern double DecreaseFactor = 3;
extern double MovingPeriod = 12;
extern double MovingShift = 6;
//+------------------------------------------------------------------+
//| Calculate open positions |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
//---- return orders volume
if(buys>0) return(buys);
else return(-sells);
}
//+------------------------------------------------------------------+
//| Calculate optimal lot size |
//+------------------------------------------------------------------+
double LotsOptimized()
{
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);
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
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;
}
//----
}
//+------------------------------------------------------------------+
//| Check for close order conditions |
//+------------------------------------------------------------------+
void CheckForClose()
{
double ma;
//---- 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);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//---- check order type
if(OrderType()==OP_BUY)
{
if(Open[1]>ma && Close[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
if(Open[1]<ma && Close[1]>ma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
break;
}
}
//----
}
//+------------------------------------------------------------------+
//| Start function |
//+------------------------------------------------------------------+
void start()
{
//---- check for history and trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//----
}
//+------------------------------------------------------------------+




MACDのサンプルプログラムは次回に貼ろうかなぁ

プログラム なう 20100829

自作プログラムの作業は停滞。

ダイバージェンスをトリガー化してinさせようと思い、
売買条件式を仕事中に紙に記述したが…
パソコンを前にして入力する気力が湧かなかった。


平日の仕事で疲れ過ぎてしまったみたいで…、

画面を前にして、
ボーっと考え事をしていた。


・自作EAを作る
・実装可能レベルのEAを探す
・既存プログラムを見て学ぶ
・バックテストが良くないEAを改良してみる
などなど、
合理的に作業するならどうしたらいいかなぁ…と考えたりしていた。


ストックしているEAの状況
・実装候補EA 4個
・多少改良したら実装できそうなEA 20個
・売買回数が極端に少なくて改良が必要だと思うEA 34個
・バックテストが全然ダメなEA 185個
・バックテスト 再チェックするEA 166個
・何故か解らないが売買成立しないけど気になるEA 4個
・売買が成立してないがプログラムを見て学べそうなEA 多数

頭の中のモヤが晴れて、
合理的に作業を進めていければいいのだけれど…

そこらへんにあるEAを適当にバックテストしてていて…、

偶然的に、
実装可能レベルのEAは見つけられないなぁww

プログラム なう 20100827


おぜっちゃんのブログは......
NT84のバックテストと損益グラフを貼っておきます。

EUR/JPY 10000通貨 0.01ロットです。

プログラム なう 20100826

「RSI EA」を外した。
バックテストの結果だけでなくプログラムを見ないとダメだなぁ…と思った。
市販されているEAの話じゃないですよ。

プログラムを見て学ぶ事はできたが、
実装して稼働させるようなプログラムではなかった。

プログラム稼働時間の設定・ストップ・リミット・トレイリングストップなどを機能チェックする為に作られたEAみたいで…

改良して発展させる為に作られたのかなぁww

基本的な骨組みが書いてあるだけみたいな気がする。

リアル売買は成立しなかった。
損失が発生しなくて良かった。



新しく「NT84」を実装した。

バックテストや損益カーブは後で貼りたいと思いますす。

プログラム なう 20100825

「RSI EA」のプログラムを見ていて…、

売買条件式を、いくつかに分離して検証してみようと思う。

このEAをネットで見つけてロット数のみ変更したんだが、
パラメータも変更してみようと思った。


パラメータを変更する事で…
もう少しバックテストの成績を良くする事ができるんじゃないかなぁ…と思う。




検証期間を2000010~120100731として、
10000ドル0.01ロットで検証した場合…、
マーチンゲール系だと数万ドル増えていたりするし
ナンピン系でも数千ドル増えていたりする。

「RSI EA」は、
数百ドルしか増えてないし、
グラフもあまりきれいではない。

で、
プログラムを見たりして最適化らしき事でもしようかなぁと思った次第です。


昨晩は、自作EAをいじっていたんだけど、なかなかうまくいかず…
最近良い成績をあげているEAを作った人が書いた「EAに関する説明」を読んでいた。

EA発掘作業はしなかった。

プログラムを見ていて、フィルターをかける前の売買条件式が結構大切なんじゃないかなぁと思ったりしている。