戦略を説明しますか?微調整を行う前に、記載されたストラテジー通りにコーディングされているかどうかを確認する必要があります。
コードが正しいのにEAからのトレードがうまくいかない場合、ストラテジーに問題があるのでしょうか?マニュアル取引ではストラテジーはうまく機能しているのでしょうか?
ご返信ありがとうございます。
ストラテジーは、絵馬がクロスしたときだけ売買するものです。うまくいく設定があり、クロスしたときだけ売買すると利益が出 ます。
このままでは、2つの絵馬のクロスでは買えません。
この段階ではそれだけを実行させたいのです。
私はプログラミングの初心者ですが、もっと勉強したいと思います。
助けてください。
このままでは、eur/usd 15と1h tfで仕事をする - しかし、十分ではありません。
またのお越しをお待ちしております。
絵馬がクロスした時のみ売買する設定になっており、クロスした時のみ売買すると利益が出るようになっています。
このままでは、2つの絵馬のクロスでは買えません。
この段階ではそれだけを実行させたいのです。
私はプログラミングの初心者ですが、もっと勉強したいと思います。
助けてください。
そのままでは、eur/usd 15と1時間足のTFで仕事をする - しかし、十分ではありません。
EMAのクロスについては、あなたのコードは正しくありません。
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
長エマと短エマにそれぞれ2つのiMAが必要です。
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2); LEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
そして、クロスをチェックするために
if (SEMA1>LEMA1 && SEMA2<LEMA2) send buy order
売りの場合
if (SEMA1<LEMA1 && SEMA2>LEMA2) sell orderを送信します。
EMAのクロスの場合、コードが正しくありません。
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
長エマと短エマにそれぞれ2つのiMAが必要です。
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2); LEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
そして、クロスをチェックするために
if (SEMA1>LEMA1 && SEMA2<LEMA2) send buy order
売りの場合
もし(SEMA1<LEMA1 && SEMA2>LEMA2) ならば売り注文を出す。
ということで
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1); LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1)
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2); LEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2); LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2)
は、「未決済注文のチェック - "移動平均の取得 "の下」に配置する必要があります。
と、"
if (SEMA1>LEMA1 && SEMA2<LEMA2) sendbuy order" where ?
また、LEMA1とLEMA2は、私はトップで定義する必要があります。
お初
あなたが私をskypeしたい場合、私のskypeはdelcor59です。
あなたの助けをいただきありがとうございます
OK
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2); LEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2); LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2)
は、「未決済注文のチェック - "移動平均の取得 "の下」に配置する必要があります。
と、"
if (SEMA1>LEMA1 && SEMA2<LEMA2) send buy order" where ?
また、LEMA1とLEMA2は、私が一番上に定義する必要があります。
まだこの中で新しい
あなたが私をskypeしたい場合、私のskypeはdelcor59です。
あなたの助けをいただきありがとうございます
このようなものは、あなた自身のコードを変更する....
void CheckForOpen()
{
double Ema;
int res;
//---- 新しいバーの最初のティクスのみ取引に行く。
if(ボリューム[0]>1) return;
//---- 移動平均を取得する
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0)となります。
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1); double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2); double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2); double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//---- 売り条件
// if(オープン[1]>Ema && クローズ[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red).OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
を返します。
}
//---- 買いの条件
// if(オープン[1]<Ema && クローズ[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
を返します。
}
//----
}
void CheckForClose()
{
ダブルEma;
//---- 新しいバーの最初のティクスのみ取引に行く
if(ボリューム[0]>1) return;
//---- 移動平均を取得
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0)となります。
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1); double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2); double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2); double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//---- オーダータイプのチェック
if(OrderType()==OP_BUY)
{
// if(オープン[1]>イーマ && クローズ[1]<イーマ)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White).If(SEMA2<Ema&&SEMA2<Ema))。
ブレーク
if(OrderType()==OP_SELL)
{
// if(オープン[1]<イーマ && クローズ[1]>イーマ)
if (SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
ブレーク
}
}
//----
}
このように、自分のコードを修正することができるのです。
void CheckForOpen()
{
ダブルEma;
int res;
//---- 新しいバーの最初のティックだけ取引に行く。
if(ボリューム[0]>1) return;
//---- 移動平均を取得する
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0)となります。
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1); double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2); double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2); double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//---- 売り条件
// if(オープン[1]>Ema && クローズ[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red).OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
を返します。
}
//---- 買いの条件
// if(オープン[1]<Ema && クローズ[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
を返します。
}
//----
}
void CheckForClose()
{
ダブルEma;
//---- 新しいバーの最初のティクスのみ取引に行く
if(ボリューム[0]>1) return;
//---- 移動平均を取得
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0)となります。
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1); double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2); double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2); double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//---- オーダータイプのチェック
if(OrderType()==OP_BUY)
{
// if(オープン[1]>イーマ && クローズ[1]<イーマ)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White).If(SEMA2<Ema&&SEMA2<Ema))。
ブレーク
if(OrderType()==OP_SELL)
{
// if(オープン[1]<イーマ && クローズ[1]>イーマ)
if (SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
ブレーク
}
}
//----
ありがとうございました。
Eaをバックテストすると、買いだけ表示されて売りがない。
Yr start()で成行注文の有無をチェックする際、注文の種類によっては成行注文を出さないようにする、つまり買いで始めると常に買い、売りで始めると常に売りとなる、そのチェック条件を外す
EA の下部にあるチェックコンディションを指しているのでしょうか?
//+------------------------------------------------------------------------+//| Startfunction|
//+------------------------------------------------------------------------+
void start()
{
//---- history and trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- current symbol で open orders を計算する
if(CalculateCurrentOrders(Symbol())==0)CheckForOpen();
else CheckForClose();
//----
}
というのも
void CheckForOpen()
void CheckForClose()
はEA下部のチェックコンディションを指しているのでしょうか?
//+------------------------------------------------------------------+///Start関数
//+------------------------------------------------------------------+
void start()
{
//---- 履歴と取引をチェックする
if(Bars<100 || IsTradeAllowed()==false) return;
//---- 現在のシンボルで未決済注文を計算する
if(CalculateCurrentOrders(Symbol())==0):現在のシンボルによる未決済注文を計算します。CheckForOpen()を実行します。
else CheckForClose();
//----
}
というのは
void CheckForOpen()
void CheckForClose()
このEAが実行されたときに何が起こるかをステップごとに示すEAプログラミング上のテストシステムがあるか教えてください。
はEA下部のチェックコンディションを指しているのでしょうか?
//+------------------------------------------------------------------+//| 関数の開始
//+------------------------------------------------------------------+
void start()
{
//---- 履歴と取引をチェックする
if(Bars<100 || IsTradeAllowed()==false) return;
//---- 現在のシンボルで未決済注文を計算する
if(CalculateCurrentOrders(Symbol())==0):現在のシンボルによる未決済注文を計算します。CheckForOpen()を実行します。
else CheckForClose();
//----
}
というのは
void CheckForOpen()
void CheckForClose()
if(Bars<100 || IsTradeAllowed()==false) return;
//---- 現在のシンボルで未決済注文を計算する
CheckForOpen();
CheckForClose();
//----
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
EAを微調整するのを手伝ってくれる人はいますか?
もっといい方法があるはずだ - 私が見る限り、間違った場所で売買されている