// обработка видимых баров.
int bars_count=WindowBarsPerChart();
int bar=WindowFirstVisibleBar();
for(int i=0; i<bars_count; i++,bar--)
{
// номера баров уменьшаются, так как нумерация идет в обратном порядке.
// ...
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает расстояние в пунктах между рынком и ближайшей |//| позицей |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - торговая операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
double d, p;
int i, k=OrdersTotal(), r=1000000;
if (sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
if (r>d) r=NormalizeDouble(d, 0);
}
if (OrderType()==OP_SELL) {
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
if (r>d) r=NormalizeDouble(d, 0);
}
}
}
}
}
return(r);
}
ご助言ありがとうございます。 しかし、インジケータをインストールすると、奇妙な描画になります(チャート参照)。 チャートウィンドウの左境界から黄色の垂直線までのインデント(バー単位)は、ウィンドウ内の可視バーが何本あっても常に停止せず、8本となります。 この8本がウィンドウ左境界を越えるとすぐにすべてのチャートラインが現れ、すべてが正常になります。 これは修正できるでしょうか?またどのように修正するのでしょうか?
こんな風にやってみよう
このコード構成は、すでに計算されたインディケータを新たに再計算するのではなく、ゼロと最初の(チェック用の)バーだけで、新しいティックごとにインディケータを再計算することができます。私は、ウィンドウに表示されているすべての可視バーによってインディケータを構築し、この時点でその最大値と最小値を見つける必要があります。以前の投稿で述べた問題を解決するのを助けてください。例がありますが、すべてが私には明らかではない。誰かがこれらの3行を一行に説明できますか?
何が必要なのかよく分かりませんが、インジケータの可視バーの MAXとMINを検索する必要がある場合は、まずインジケータを描画してから検索してください。
WindowPriceMax()、WindowPriceMin()を使用したほうがいいかもしれませんね。
ステファン2
作品紹介
結局は配列の不具合があるのですが、whileで
c for forは問題なく動作します。
))
こんにちは。
みんな、何を使ってEAをテストすればいいのか教えてくれ。なぜなら、内蔵されたMTは平均50%のシミュレーション品質を与え、スクリーンショットでは90%以上を投稿している人がいるからです。
こんにちは。
みんな、何を使ってEAをテストすればいいのか教えてくれ。なぜなら、内蔵されたMTは平均50%のシミュレーション品質を与え、スクリーンショットでは90%以上を投稿している人がいるからです。
全部の分の履歴があれば、90%になります。99%は、ティックヒストリー fxtを自分で作成することで達成されます。これは通常、デューカスコープの引用符を使用して行われます。99%の品質テストをテーマにしたGoogleスクリプト
こんにちは、Expert Advisorのコードに、最後の注文から50ピップ後に同じ種類の注文を設定する条件を実装する方法です。
添付のインジケーターのコードのどこに行を挿入すればいいのか、何も分からないのでアドバイスお願いします。このインジケータは、通貨ペアの動きを別のウィンドウで表示しますが、市場概要ウィンドウでペアの1つが欠けているため、何も表示されないということです。というアドバイスを受け、こちらを使用することにしました。
この場所だけエラーが発生する可能性があります
double Vol = iCustom(s[n],0, "Ind ZeroLag MACD",FastEMA,SlowEMA,0,0) / MarketInfo(s[n], MODE_POINT)。
MarketInfo(symbol, MODE_POINT)にデータがない場合、ゼロによる除算が 行われる。
MarketInfo(symbol, MODE_POINT) にチェックを挿入する。
どこに置けばいいのかわからない(マーケット概要にGBP/NZDのペアがない)。アドバイスをお願いします。