if (mm!=0) { lotsi=MathCeil(AccountBalance()*risk/10000); }.
else { lotsi=Lots; }.
} else { // その後がミニ
if (mm!=0) { lotsi=MathCeil(AccountBalance()*risk/10000)/10; } }.
else { lotsi=Lots; }.
}
if (lotsi>100){ lotsi=100; }.
OpenOrders=0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol())
{
OpenOrders++;
}
}
/*
if (OpenOrders<1)
{
if (TimeYear(CurTime())<StartYear) { return(0); }.
if (TimeMonth(CurTime())<StartMonth) { return(0); }.
if (TimeYear(CurTime())>EndYear){return(0);}。
if (TimeMonth(CurTime())>EndMonth ) { return(0); }.
*/
if (Symbol()=="EURUSD") { PipValue=EURUSDPipValue; } }.
if (Symbol()=="GBPUSD") { PipValue=GBPUSDPipValue; } */ if (Symbol()=="GBPUSD") { PipValue=GBPUSDPipValue。
if (Symbol()=="USDJPY") { PipValue=USDJPYPipValue;}。
if (Symbol()=="USDCHF") { PipValue=USDCHFPipValue; } もし (Symbol()=="USDCHF") { PipValue=USDCHFPipValue。
if (PipValue==0) { PipValue=5; }.
if (PreviousOpenOrders>OpenOrders)
{
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
mode=OrderType()。
if (OrderSymbol()==Symbol())
{
if (mode==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue); }.
if (mode==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red); } { 注文終了。
return(0);
}
}
}
PreviousOpenOrders=OpenOrders;
if (OpenOrders>=MaxTrades)
{
ContinueOpening=False。
} else {
ContinueOpening=True。
if (LastPrice==0)
{
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
mode=OrderType();
if (OrderSymbol()==Symbol())
{
LastPrice=OrderOpenPrice()。
if (mode==OP_BUY) { myOrderType=2; }.
if (モード==OP_SELL) { myOrderType=1; }.
}
}
}
if (OpenOrders<1)
{
myOrderType=3です。
//if (iMACD(14,26,9,MODE_MAIN,0)>0 and iMACD(14,26,9,MODE_MAIN,0)>iMACD(14,26,9,MODE_MAIN,1)) then OrderType=2.If (iMACD(14,26,9,MODE_MAIN,1)>iMACD)
if (iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0)>iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) { myOrderType=2; } } { iMACD(NULL,0,14,26,9,MODE_MAIN,0) >iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)
//if (iMACD(14,26,9,MODE_MAIN,0)<0 and iMACD(14,26,9,MODE_MAIN,0)<iMACD(14,26,9,MODE_MAIN,1)) then OrderType=1.If (iMACD(14,26,9,MODE_MAIN,1)), orderType=1;
if (iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0)<iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) { myOrderType=1; } もし、(ReverseCondition==1) if (NULL(14,26,9,MODE_MAIN,0) <iMACD(14,26,9,MODE_MAIN,2)
if (ReverseCondition==1)
{
if (myOrderType==1) { myOrderType=2; }.
else { if (myOrderType==2) { myOrderType=1; }.}
}
}
// もし、オープンポジションがあれば、それを処理します。
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol())
{
if (オーダータイプ()==OP_SELL)
{
if (TrailingStop>0)
{
if (OrderOpenPrice()-Ask>=(TrailingStop+Pips)*Point)
皆さんこんにちは、このスレッドは初めてです。
IBFXで10p3v002(Davidに感謝)TF 30Mを使っていて、マイクロ口座(250ドル)でバックテストするつもりです。しかし、0.01ロットで取引するのではなく、常に0.1ロットと0.3ロットで取引しています。私はここで何かを見逃しているのでしょうか?
利益自体はすごいのですが、このロット数で取引するのはリスクが高すぎると思います。以下は私の設定と詳細な説明です。
ティア、ドン
extern int Magic = 772188;
extern double TakeProfit = 10;
extern double Lots = 0.01;
extern double InitialStop = 160;
extern double TrailingStop = 0;
extern int MaxTrades = 10;
extern double Multiplier = 3;
extern int Pips = 5;
extern int OrderstoProtect = 4;
extern bool Money_management = true;
extern int AccountType = 2; /0:標準口座(NorthFinance、MiG、Alpari) 1:通常口座(FXLQ、FXDD) 2:InterbankFXのNANO口座
extern double risk = 0.5;
extern bool ReverseSignal = false;
extern int Fast_EMA = 12;
extern int Slow_EMA = 26;
extern int Signal_SMA = 9;
extern int Shift = 1;
extern int TradingRange = 0;
extern bool UseTimeFilter=true;
extern int StopTrade = 13;
extern int StartTrade = 18;MQ4の設定時にミニ口座を選択し忘れている可能性はありませんか? もしそうなら、「口座」を右クリックして新規を選択し、口座の種類をミニに変更したことを確認してください。
それが問題であった場合、すべてがうまくいくはずです。
乾杯
ウェイン
Davidさん、早速のご返事ありがとうございます。
トレーリングストップを利確のために使いたいので、利確に「0」をつけています。
EAの買いでは、ストップロス(トレイリングストップ)を変更するのは、Sell/Shortの代わりにxtream goodでした(問題はここです -- sell/short no modify stoploss action!)なぜでしょう?
10points3は私が思っていたよりずっと大きいです。
このeaは驚くべき結果で、私はすでにその良さを確認するために先行してテストしています....
このeaは驚くべき結果で、私はすでにその良さを確認するためのテストを進めています。
私はそれを修正するために私の時間のほとんどをしようとすると、悲しいことにダウンして失敗する...
このような場合、「BID」という単語を「ASK」に変更する必要があるのでしょうか?これは、私が一つも変更せずに行ったバックテスト です。コードは正常に動作しています。
ありがとうございました。
デビッド
トレーダーの皆様へ、もう1つだけ簡単なお知らせです。IBFXのライブ口座をお持ちの方はご注意ください。この注意を読んでください!!!IBFXの標準口座では、レバレッジは1:100です。10p3v0シリーズで取引を行う場合、リスクをNANO口座の半分に減らすことを念頭に置いてください。なぜなら、通常NANO口座は1:200のレバレッジで提供されるからです。ライブチャットの担当者に、標準口座を1:200に変更することを手伝ってもらうことができれば、NANO口座の設定を同じにして実行することができます。これがお役に立てれば幸いです。
返信
デビッド
これは、私が何も変えずに行ったバックテストです。コードはうまく動作しています。
関連記事
David今お使いのバージョンは何ですか?
そして、あなたの設定を教えてください。
私の方では、NANOでも通常のアカウントでも問題はありません。なぜそのような問題が発生するのか分かりませんが。
採用情報
デビッドありがとう、David。
私は10point4のバージョンを使っているのですが、あなたは今どのバージョンを使っていますか?
ありがとうございます、David、多分私は10point4のバージョンを使っていると思います。
バージョン0.03です。以前の30Xのページ(306か309か忘れました)を読んでみてください。設定はバックテストレポートにあります。口座残高を 1000以下にしたい場合は、NANO条件(EURUSDの後ろに "m "が付いているもの、EURUSDm)でテストしていることを確認してください。
ご指摘ありがとうございます。
デビッド
p/s: 10poin4は私が作成したものではありません。もし、あなたが本当にその特定のバージョンで物事を正しくする必要があるなら、あなたを助けるために他のコーダーを見つけなさい。
MQ4をセットアップするときに、ミニアカウントを選択するのを忘れた可能性はありませんか? もしそうなら、「アカウント」を右クリックして、「新規作成」を選択し、アカウントの種類をミニに変更していることを確認してください。
それが問題であったなら、すべてがうまくいくはずです?
乾杯
ウェインその通りです、私の小さな愚かなミスです。Wayneさん、ありがとうございます。
その通りです、私の小さな愚かなミスです。ありがとう、Wayne!
私たちは皆、人間ですから、間違いは避けられません :-)
乾杯
ウェイン
バージョン0.03です。以前の30Xのページ(306か309か覚えていません)で見つけることができます。設定はバックテストレポートにあります。1000以下の口座残高をテストしたい場合、NANO条件(EURUSDの後ろに "m "が付いているもの、EURUSDm)でテストしていることを確認してください。
採用情報
デビッド
p/s: 10poin4は私が作成したものではありません。もし、あなたが本当にその特定のバージョンで物事を正しくする必要があるならば、あなたを助けるために他のコーダーを見つけなさい。ありがとうございました。
Eaのヘルプが必要です
新しいスレッドや何かを開始する方法を知らないので、私は10points3を取引していると私はそれが一日の特定の時間だけ取引することができるコードを置くために誰かを見つけようとしています。
extern double TakeProfit = 10;
extern double Lots = 0.01;
extern double InitialStop = 80;
extern double TrailingStop = 0.0; extern double InitialStop = 80; extern double TrailingStop = 0;
extern int MaxTrades=7;
extern int Pips=5;
extern int SecureProfit=0;
extern int AccountProtection=0;
extern int OrderstoProtect=0;
extern int ReverseCondition=0;
extern double EURUSDPipValue=10;
extern double GBPUSDPipValue=10; extern double USDCHFPipValue=10;
extern double USDCHFPipValue=10;
extern double USDJPYPipValue=9.715;
extern int StartYear=2005;
extern int StartMonth=1;
extern int EndYear=2005; extern int StartMonth=1; extern int EndMonth=2005;
extern int EndMonth=12;
extern int EndHour=22;
extern int EndMinute=30; extern int EndHour=22; extern int EndMinute=30。
extern int mm=0;
extern int risk=12;
extern int AccountisNormal=0;
int OpenOrders=0, cnt=0;
int スリッページ=0;
double sl=0, tp=0;
double BuyPrice=0、SellPrice=0;
double lotsi=0、mylotsi=0;
int mode=0, myOrderType=0;
bool ContinueOpening=True;
double LastPrice=0;
int PreviousOpenOrders=0;
double Profit=0。
int LastTicket=0, LastType=0;
double LastClosePrice=0、LastLots=0;
double Pivot=0;
double PipValue=0;
文字列 text="", text2="";
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
//----
if (AccountisNormal==1)
{
if (mm!=0) { lotsi=MathCeil(AccountBalance()*risk/10000); }.
else { lotsi=Lots; }.
} else { // その後がミニ
if (mm!=0) { lotsi=MathCeil(AccountBalance()*risk/10000)/10; } }.
else { lotsi=Lots; }.
}
if (lotsi>100){ lotsi=100; }.
OpenOrders=0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol())
{
OpenOrders++;
}
}
/*
if (OpenOrders<1)
{
if (TimeYear(CurTime())<StartYear) { return(0); }.
if (TimeMonth(CurTime())<StartMonth) { return(0); }.
if (TimeYear(CurTime())>EndYear){return(0);}。
if (TimeMonth(CurTime())>EndMonth ) { return(0); }.
*/
if (Symbol()=="EURUSD") { PipValue=EURUSDPipValue; } }.
if (Symbol()=="GBPUSD") { PipValue=GBPUSDPipValue; } */ if (Symbol()=="GBPUSD") { PipValue=GBPUSDPipValue。
if (Symbol()=="USDJPY") { PipValue=USDJPYPipValue;}。
if (Symbol()=="USDCHF") { PipValue=USDCHFPipValue; } もし (Symbol()=="USDCHF") { PipValue=USDCHFPipValue。
if (PipValue==0) { PipValue=5; }.
if (PreviousOpenOrders>OpenOrders)
{
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
mode=OrderType()。
if (OrderSymbol()==Symbol())
{
if (mode==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue); }.
if (mode==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red); } { 注文終了。
return(0);
}
}
}
PreviousOpenOrders=OpenOrders;
if (OpenOrders>=MaxTrades)
{
ContinueOpening=False。
} else {
ContinueOpening=True。
if (LastPrice==0)
{
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
mode=OrderType();
if (OrderSymbol()==Symbol())
{
LastPrice=OrderOpenPrice()。
if (mode==OP_BUY) { myOrderType=2; }.
if (モード==OP_SELL) { myOrderType=1; }.
}
}
}
if (OpenOrders<1)
{
myOrderType=3です。
//if (iMACD(14,26,9,MODE_MAIN,0)>0 and iMACD(14,26,9,MODE_MAIN,0)>iMACD(14,26,9,MODE_MAIN,1)) then OrderType=2.If (iMACD(14,26,9,MODE_MAIN,1)>iMACD)
if (iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0)>iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) { myOrderType=2; } } { iMACD(NULL,0,14,26,9,MODE_MAIN,0) >iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)
//if (iMACD(14,26,9,MODE_MAIN,0)<0 and iMACD(14,26,9,MODE_MAIN,0)<iMACD(14,26,9,MODE_MAIN,1)) then OrderType=1.If (iMACD(14,26,9,MODE_MAIN,1)), orderType=1;
if (iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0)<iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) { myOrderType=1; } もし、(ReverseCondition==1) if (NULL(14,26,9,MODE_MAIN,0) <iMACD(14,26,9,MODE_MAIN,2)
if (ReverseCondition==1)
{
if (myOrderType==1) { myOrderType=2; }.
else { if (myOrderType==2) { myOrderType=1; }.}
}
}
// もし、オープンポジションがあれば、それを処理します。
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol())
{
if (オーダータイプ()==OP_SELL)
{
if (TrailingStop>0){
if (OrderOpenPrice()-Ask>=(TrailingStop+Pips)*Point)
{
if (OrderStopLoss()>(Ask+Point*TrailingStop))の場合
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice() - TakeProfit*Point-TrailingStop*Point,800,Purple).OrderOpenPrice(),Ask+TrailingStop()の場合。
return(0);
}
}
}
if (OrderType()==OP_BUY)
{
if (TrailingStop>0){
if (買値-売値()>=(TrailingStop+Pips)*ポイント)
{
if (オーダーストップロス()<(ビッド-ポイント*トレイリングストップ))
{
注文変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderClosePrice() +TakeProfit*Point+TrailingStop*Point,800,Yellow).OrderModify(OrderOpenPrice())
return(0);
}
}
}
}
}
Profit=0;
LastTicket=0;
LastType=0。
LastClosePrice=0。
LastLots=0。
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol())
{
LastTicket=OrderTicket()。
if (オーダータイプ()==OP_BUY){ LastType=OP_BUY; } { LastType=OP_BUY。
if (OrderType()==OP_SELL) { LastType=OP_SELL;}。
LastClosePrice=OrderClosePrice()。
LastLots=OrderLots()。
if (LastType==OP_BUY)
{
//Profit=Profit+(Ord(cnt,VAL_CLOSEPRICE)-Ord(cnt,VAL_OPENPRICE))*PipValue*Ord(cnt,VAL_LOTS));
if (OrderClosePrice()<OrderOpenPrice())の場合。
{ 利益=利益-(OrderOpenPrice()-OrderClosePrice())*OrderLots()/ポイント; }。
もし(OrderClosePrice()>OrderOpenPrice())
{ 利益=利益+(OrderClosePrice()-OrderOpenPrice())*OrderLots()/Point; } }.
}
if (LastType==OP_SELL)
{
//Profit=Profit+(Ord(cnt,VAL_OPENPRICE)-Ord(cnt,VAL_CLOSEPRICE)) *PipValue*Ord(cnt,VAL_LOTS);
if (OrderClosePrice()>OrderOpenPrice())の場合。
{ 利益=利益-(OrderClosePrice()-OrderOpenPrice())*OrderLots()/Point; } } { 利益=利益-(OrderClosePrice()-OrderOpenPrice())
もし(OrderClosePrice()<OrderOpenPrice())
{ 利益=利益+(OrderOpenPrice()-OrderClosePrice())*OrderLots()/Point; } { 利益=利益+OrderClosePrice()*OrderLots())/Point
}
//Print(Symbol,":",Profit,", "LastLots)。
}
}
利益=Profit*PipValue;
text2="利益: $"+DoubleToStr(Profit,2)+" +/-";
if (OpenOrders>=(MaxTrades-OrderstoProtect) && AccountProtection==1)
{
//Print(Symbol,":",Profit)を実行。
if (利益>=SecureProfit)(利益)
{
オーダークローズ(LastTicket,LastLots,LastClosePrice,slippage,Yellow);
ContinueOpening=False。
return(0);
}
if (!IsTesting())
{
if (myOrderType==3) { text="No conditions to open trades"; }.
else { text=" "; }.
Comment("LastPrice=",LastPrice," Previous open orders=",PreviousOpenOrders,"\nContinue opening=",ContinueOpening," OrderType=",myOrderType,"\n",text2,"\nLots=",lotsi,"\n", text).
}
if (myOrderType==1 && ContinueOpening)
{
if ((Bid-LastPrice)>=Pips*Point || OpenOrders<1)
{
SellPrice=Bid;
LastPrice=0;
if (TakeProfit==0) { tp=0; }.
else { tp=SellPrice-TakeProfit*Point; }.
if (InitialStop==0){sl=0;}。
else { sl=SellPrice+InitialStop*Point;}。
if (OpenOrders!=0)
{
mylotsi=lotsi;
for(cnt=1;cnt<=OpenOrders;cnt++)
{
if (MaxTrades>12) { mylotsi=NormalizeDouble(mylotsi*3,3); }.
else { mylotsi=NormalizeDouble(mylotsi*3,3); }.
}
} else { mylotsi=lotsi; } }
if (mylotsi>100) { mylotsi=100; }.
OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,sl,tp,NULL,0,0,Red).OrderSend(Symbol(),OP_SELL,mylotsi,SellPrice,slippage,sl,tp,NULL,0,Red);
return(0);
}
}
if (myOrderType==2 && ContinueOpening)
{
if ((LastPrice-Ask)>=Pips*Point||OpenOrders<1))。
{
BuyPrice=Ask;
LastPrice=0;
if (TakeProfit==0) { tp=0; }.
else { tp=BuyPrice+TakeProfit*Point; }.
if (InitialStop==0){sl=0;}。
else { sl=BuyPrice-InitialStop*Point;}。
if (OpenOrders!=0)の場合{。
mylotsi=lotsi;
for(cnt=1;cnt<=OpenOrders;cnt++)
{
if (MaxTrades>12) { mylotsi=NormalizeDouble(mylotsi*3,3); }.
else { mylotsi=NormalizeDouble(mylotsi*3,3); }.
}
} else { mylotsi=lotsi; } }
if (mylotsi>100) { mylotsi=100; }.
OrderSend(Symbol(),OP_BUY,mylotsi,BuyPrice,slippage,sl,tp,NULL,0,0,Blue).OrderSend(Symbol(),OP_BUY,mylotsi,BuyPrice,sl,tp,NULL,0,0,Blue);
return(0);
}
}
//----
return(0)。
}
//+------------------------------------------------------------------+