MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1240

 

こんにちは。

不思議な問題があるんです。

MT4端子です。各チャートには約15種類のインジケーター(標準と自作)があります。インジケーターリスト(Ctrl + i)からインジケーターを削除しようとすると、ターミナルがハングアップすることがあります。同時に、同じインジケータを削除しようと、バッファを通してインジケータが描く線または矢印の上でマウスの右ボタンを押し、メニュー項目「インジケータの削除」を選択すると、問題なく即座に削除されます。一番困るのは、削除時にあるインジケータがハングアップしたり、別のインジケータがハングアップしたり・・・と、問題が浮遊していることです。が同じインジケータでハングアップする場合としない場合があります。

この点に関して、2つの質問があります。

1) インジケータリストからインジケータを削除する際に、端末がハングアップすることがありますが、何が原因でしょうか?

2) 上記で説明した2つのインジケーターの削除方法の違いは何ですか?

 
satorifx:

奇妙な問題がある

まず7つのインジケータを一緒に動かしてみて、問題がなければ、残りの8つを別々に動かしてみてください。問題があれば、もう一度半分に割ってください。これによって、犯人の一人や二人は見つかるでしょう。何も見つからなければ、15から1つずつ削除していきます。 ブラックボックス方式の試行錯誤は、技術と根気があればうまくいくでしょう。
 
MT5のイベントハンドラ、CHARTEVENT_CUSTOM OnChartEvent()は、複数のスレッドを扱うことを知っています。

OnChartEvent()ハンドラ内でスレッドセーフなロジックを作成できるか?

MQL5でスレッド指向のコードを書くことは全くできないのでしょうか?
 
アドバイスお願いしますExpert AdvisorでiCustom経由でカスタムインディケータを 呼び出した場合、このインディケータの入力パラメータをExpert Advisorに表示させるにはどうしたらいいですか?インジケーターのソースコードを持っています。複雑なんですか?
 
Sayberix:
アドバイスお願いしますExpert AdvisorでiCustomを通してカスタムインディケータを 呼び出した場合、Expert Advisorにその入力パラメータを表示させるにはどうしたらいいですか?インジケーターのソースコードを持っています。それは難しいことなのでしょうか?

指標のようにプロパティの列挙順で書く

doubleiCustom(
stringsymbol,// シンボル名
inttimeframe,// timeframe
文字列// インジケータフォルダ/ユーザ名
...// インジケータ入力パラメータのリスト
intmode,// データソース
intshift// shift
);


インジケーターの「入力パラメーター」を開き、必要な値で順番にコピーしていく

必ず変数の型を見て、文字列なら引用符で囲んでください、何も飛ばせないんです。

double val=iCustom(NULL,0,"SampleInd","",240,3,"",clrNONE,clrNONE,1,0);
 
こんにちは、なぜこのようなアーティファクトが発生するのでしょうか?エマージェンシー・クローズ・コードは最初の交差点で閉じるべきじゃないのか?クロージングエラーは発生していません。
if(MathAbs(Ima-Ima2) <= c && OrdersTotal() != 0)
        {
         OrderSelect(ticket, SELECT_BY_TICKET);
         int a = OrderType();
         RefreshRates();
         if(a == 0)
           {
            OrderClose(ticket, lots, Bid, 20, clrBlack);
           }
         if(a == 1)
           {
            OrderClose(ticket, lots, Ask, 20, clrBlack);
           }
         ticket = 0;
}
ファイル:
test.png  22 kb
 
RefreshRatesはここで機能するのでしょうか?

関数 OrderSend の中で、 セナがありますが セナは サイクルの前に設定されています。


double cena=Ask;

for (int i=0; i<=10; i++)
   {
   RefreshRates();
   int t=OrderSend(OrderSymbol(),OP_BUY,0.1,cena,10,0,0); 
   if (t!=-1) break;
   }
 
igrok333:
RefreshRatesはここで機能するのでしょうか?関数

OrderSend の中で、セナがありますが セナは サイクルの前に設定されています。


まぢ

 
Igor Makanu:

まぢ

彼は、以前、ascがまだ古いときに、
、その後、refreshratesだけがascを変更した価格を取りましたね?
 
ご想像のとおりです。cena変数はRefreshRatesから独立しています。