iMA_handle=iMA("EURUSD",PERIOD_H1,40,0,MODE_SMA,PRICE_CLOSE); //インジケータを接続し、ハンドルを取得する ....... ChartIndicatorAdd(ChartID(),0,iMA_handle); // 価格チャートにインジケータを追加する。これではうまくいかない。しかし、シンボルと時間を削除すれば、すべてOKだ。
iMA_handle=iMA(NULL,0,40,0,MODE_SMA,PRICE_CLOSE);
おめでとう!
非常にシンプルで、よくできたコードだ。ライブラリを参照することで、私がほぼ100行でやったこと(ロング・ポジションのオープンとクローズのみ)を数行でやってのけたと思います。
特に以下の行を参考にしています:
if(m_Position.選択(my_symbol))if(m_Position. Select(my_symbol))//このシンボルのポジションがすでに存在する場合
{
if(m_Position.PositionType()==POSITION_TYPE_SELL) m_Trade.PositionClose(my_symbol);//このポジションが売りポジションであれば、クローズする
if(m_Position.PositionType()==POSITION_TYPE_BUY)return;//and/or else, if this is a Buy position, then exit
}
m_Trade.買い(0.1,my_symbol);
//ここまで来たら、ポジションがないことを意味する。}
if(iMA_buf[1]<Close_buf[1] && iMA_buf[0]>Close_buf[0]) //インジケータの値が、iMA_buf[1]<Close_buf[0]の場合。//指標値が終値より小さかったものが大きくなった場合
{
if(m_Position.選択(my_symbol))// このシンボルのポジションが既に存在する場合
{
if(m_Position.PositionType()==POSITION_TYPE_BUY) m_Trade.PositionClose(my_symbol);//このポジションが買いポジションであれば、クローズする
if(m_Position.PositionType()==POSITION_TYPE_SELL)return;//and/or else, if this is a Sell position, then exit
}
m_Trade.売り(0.1,my_symbol);//ここでポジションがなければ、ポジションをオープンする
}
唯一見逃したのは、新しいバーが表示されたときだけ取引するコマンドかもしれない。www.mql5.com/en/forum/5762 で議論があった。
私は、mogplus8が投稿した以下のコードを使っています:
static int LastBarCount=0;
if(Bars(_Symbol,_Period)>LastBarCount)
LastBarCount=Bars(_Symbol,_Period);
else
return;
トレードについてのあなたの発言に、私は少々困惑している。
この記事で紹介されているトレードは、アーティエルhttp://mqlmagazine.com/leading-article/orders-positions-and-deals-part-i/ の「シール」に非常に近いものです。これらは同じものなのでしょうか? 何が違うのでしょうか?
ところで、リンク先のページで著者はこう述べています:市場に出された各注文は、他の注文とは独立した、独自の結果を持つ取引そのものである。
この言葉をここに貼り付けたのは、コメントに注目してくださった方々の誤解を解くためです。
ありがとうございました。
- mqlmagazine.com

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事 初心者のためのクイックスタート、あるいはショートガイド はパブリッシュされました:
読者の皆さんこんにちは!この記事では、Expert Advisorsの作成やインディケーターの使い方などの基本的なコツを簡単に素早く掴めるように説明していきたいと思います。初心者対象で難しいサンプルの紹介は行いません。
作者: Dmitriy Parfenovich