ご挨拶!
私はここでいつもの話をしていると思います。 MQL4の新機能、いくつかのコーディング背景(BASICとHTML)、blah、blah、blah、今私は自分のEAを書く際に手を使っています。
それは特別なものではない。私はEMAブレークアウトEAに取り組んでいます。それが私の最初の一つであるので、私はそれを簡単に保つと思った。したがって、EAは20 EMA以下のバーを開いて、その上を閉じることに基づいて動作します。次のバーは、前のバーの上に3ピップの高さのオーダーを開きます。それは基本的なEAであるため、注文はTPまたはSLポイントに当たって閉じられますが、注文を閉じるための他のコーディングはありません。
ここに問題がある。私が持っている最初のバージョンは、すべてのダニの後に注文を開きます。あなたが有益な貿易をしているときニース、あなたがしないときに吸う。だからバージョン2では、別のEAのカウンタコードを追加しようとしましたが、現在は取引が開かれていません。
バージョン1のコードは次のとおりです(申し訳ありませんが、私はきちんとした小さなボックスに入れておきます)。
int start()
{
//----
int cnt、total、ticket;
double emaT = iMA(NULL、0,20,0、MODE_EMA、PRICE_CLOSE、0);
double MacdCurrent = iMACD(NULL、0,12,26,9、PRICE_CLOSE、MODE_MAIN、0);
合計= OrdersTotal();
if(totallt; 1)
ブール購入=偽;
ブール販売=偽;
(MacdCurrent gt; 0))=(1 = gt; 3 * Pointを開く)((Ask == High [1] gt; 3 * Point)(Open [1] lt; emaT)
(MacdCurrent lt; 0))= true;(1)== Bid gt; 3 * Point)(emaT gt;
{
もし(購入)
チケット= OrderSend(Symbol()、OP_BUY、Lots、Ask、0、Ask-StopLoss * Point、Take TakeProfit * Point、Momo Trade、magicnumber、0、Green);
if(ticketgt; 0)
if(OrderSelect(チケット、SELECT_BY_TICKET、MODE_TRADES))
return(0);
}
{
if(売る)
チケット= OrderSend(Symbol()、OP_SELL、Lots、Bid、0、Bid StopLoss * Point、Bid-TakeProfit * Point、Momo Trade、magicnumber、0、Red);
if(ticketgt; 0)
if(OrderSelect(チケット、SELECT_BY_TICKET、MODE_TRADES))
return(0);
}
return(0);
}
//----
バージョン2は同じですが、このコードがカウンタ用に追加されています:
オーダー= OrdersTotal();
for(cnt = 0; cntlt; OrdersTotal(); cnt )
{
if(OrderSelect(cnt、SELECT_BY_POS))
OrderSelect(cnt、SELECT_BY_POS、MODE_TRADES);
if(OrderSymbol()== Symbol())
{
if(OrderType()== OP_BUY)
また、私は誰もが注意を払っているが、私のコードは、以前の高値/安値に基づく注文を(Ask == High [1] gt; 3 * Point)コードで置き換えるのは正しいですか?
ありがとう!