新しいコードが、立ち往生

ゴール:
2つのSMAがクロスしたとき、私はそれからStochasticsがレベルに達するまでチェックし続け、それからトレードしたいです。

私の問題:

十字架の時に十字架とStochasticsを見るためだけにコードを得ることができます。クロスが発生した後もStochasticsをチェックし続けません。
そう…もしクロスが起こったときに確率論がそのレベルになければ、貿易は起こらない。クロスが発生したことに注意して、確率レベルをチェックし、後で取引することができるようにしたいのですが…

助けてください…私はこれで新しいです。

前もって感謝します。

これが私がこれまでに持っているコードです:

// ———————————————– ——————-
// |エキスパートスタート機能|
// ———————————————– ——————-
int start()
{
int cnt、チケット、合計。
ダブルSEma、LEma、Stoch;
// —-
if(バー<100)
{
印刷( "100未満の小節");
(0)を返します。
}
// —-
if(テイクプロフィット<10)
{
印刷( "TakeProfit 10未満");
(0)を返します。 //テイクプロフィットをチェック
}
// —-
SEma = iMA(NULL、30、ShortEma、0、MODE_LWMA、PRICE_CLOSE、0)。
LEma = iMA(NULL、30、LongEma、0、MODE_LWMA、PRICE_CLOSE、0)。
Stoch = iStochastic(NULL、30、Stochastic、dPeriod、スロー、MODE_SMA、0、MODE_SIGNAL、0);
// —-
static int isCrossed = 0;
isCrossed = Crossed(SEma、LEma);
/ / —-
total = OrdersTotal();
if(合計<1)
{
if(isCrossed == 1)
if(SEma> LEma && Stoch> 50)
{
ticket = OrderSend(Symbol()、OP_BUY、ロット、Ask、3、Ask – StopLoss *ポイント、
Ask TakeProfit * Point、 "EMA_CROSS"、12345、0、Green);
if(チケット> 0)
{
if(OrderSelect(ticket、SELECT_BY_TICKET、MODE_TRADES))
印刷(「注文をオープンに購入:」、OrderOpenPrice());
}
それ以外の
印刷(「購入注文を開く際のエラー:」、GetLastError());
(0)を返します。
}
if((isCrossed == 2)&&(SEma <LEma)&&(Stoch <50))
{
ticket = OrderSend(Symbol()、OP_SELL$ B!”%m%C%H!”F~;%!”3、入札 ストップロス*ポイント、
入札 – テイクプロフィット*ポイント、 "EMA_CROSS"、12345、0、赤);
if(チケット> 0)
{
if(OrderSelect(ticket、SELECT_BY_TICKET、MODE_TRADES))
印刷(「 注文をオープンに販売:」、OrderOpenPrice());
}
それ以外の
印刷( "販売注文を開くときにエラーが発生しました:"、GetLastError());
(0)を返します。
}
(0)を返します。
}
// —-
(cnt = 0; cnt <total; cnt )の場合
{
OrderSelect(cnt、SELECT_BY_POS、MODE_TRADES);
if(OrderType()<= OP_SELL && OrderSymbol()== Symbol())
{
// if(OrderType()= = OP_BUY)//ロングポジションがオープンしている


私はMetaTraderに慣れていませんが、バックテストに慣れていません。したがって、私は特定のコードを提案することはしませんが、いくつかのアイデアがあります。

最初に、MAクロスオーバーが発生した後にどれだけ長くStodhasticトリガーを探すことを望んでいるかを決める必要があります。あなたはおそらく永遠に見たくはないでしょう。あなたは、石がXバー以内で満たされなければならないとあなたが決めると仮定しよう。

まず、EMAクロスオーバーで、start()関数の各エントリで破壊されないように、小節番号を静的変数にキャプチャします。
その後、それぞれの新しい小節で、確率的トリガーが発生し、クロスオーバーのX小節以内にいるかどうかを確認します。

また、確率が満たされる前に新しいクロスオーバーが発生した場合は、バーカウンターをリセ 奪箸靴萄能蕕らやり直すようにコーディングする必要があります。

ローリン




875: https://www.mql5.com/en/forum/103513


Originally posted 2019-08-02 21:28:34.

Translate »