どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 52

 

皆さんこんにちは!今日から勉強を始めたばかりですが、常にチェックされる条件の書き方がわかりません。

時間間隔t(ユーザーが小数点以下1桁で入力、例:15.5秒)の価格が金額n(ユーザーが整数で入力、例:5)で下落した場合、Expert Advisorは売りをオープン します。

おつかれさまでした

 
皆さん、こんにちは。少なくとも幾何学的ブラウン運動型か(理想的には)))確率的ハースト指数を 持つWeierstrass-Mandelbrot関数のような、質の高いランダムクオートジェネレータが必要である。週末に、価格シリーズのインジケーターをデバッグする必要が生じました。私はiTicksのスクリプトなしではやっていけません。してみましたが、それとも自分で開発することになるのでしょうか?サイト内検索では何も出なかったのですが、もしかしたら私が探しているものは、単にキーワードとは別の呼び名なのかもしれません...。
 
expmaestro:

皆さんこんにちは!今日から勉強を始めたばかりですが、常にチェックされる条件の書き方がわかりません。

時間間隔t(ユーザーが小数点以下1桁で入力、例:15.5秒)の価格が金額n(ユーザーが整数で入力、例:5)で下落した場合、Expert Advisorは売りをオープン します。

おつかれさまでした

そのアルゴリズムがこちら です。実例から学ぶ
 
ありがとうございます、何とかしてみます。 本当に必要なものであればいいのですが。
 
expmaestro:
ありがとうございます。 本当に必要なものであればいいのですが。

私はてっきりラッキーはこの原理に基づいていると思い込んでいたのですが、そうではないことが判明しました。では、そんなスキームを試してみてください。

extern int ShiftSec = 15;
extern int ShiftPips = 10;
//IIIIIIIIIIIIIIIIIII======Глобальные переменные советника======IIIIIIIIIIIIIIIIIIIIII+
datetime   gdt_NewTime;
double     gda_Price[0][2];
int        gi_size;
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert initialization function                            |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void init()
{
//----
    gi_size = 0;
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert deinitialization function                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void deinit()
{
//----
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert iteration function                                 |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void start()
{       
//----
    if (gdt_NewTime == TimeCurrent()) return;
    gdt_NewTime = TimeCurrent();
    if (gi_size < ShiftSec) {ArrayResize (gda_Price, gi_size + 1); gi_size++;}
    else
    {
        //---- Это схема к которой нужно добавить управление ордерами
        if (gda_Price[0][0] - Bid > ShiftPips * Point)
        //---- Открываемся BUY
        if (Ask - gda_Price[0][1] > ShiftPips * Point)
        //---- Открываемся SELL
        //---- Сдвигаем массив цен на 1 вниз
        double lda_tmp[][2];
        ArrayResize (lda_tmp, gi_size);
        ArrayCopy (lda_tmp, gda_Price);
        int li_IND0, li_IND1;
        for (li_IND0 = 0; li_IND0 < gi_size - 1; li_IND0++)
        {
            for (li_IND1 = 0; li_IND1 < 2; li_IND1++)
            gda_Price[li_IND0][li_IND1] = lda_tmp[li_IND0+1][li_IND1];
        }
    }
    //---- Собираем цены
    gda_Price[gi_size-1][0] = Bid;
    gda_Price[gi_size-1][1] = Ask;
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
コードが動作するかどうかを確認する必要があります。時間間隔は1秒の倍数で計算される。時間間隔を短くすることは、私の勝手な判断ではありません。
 

EAのパラメーターの値を変更できるように、チャート上にホットキーを実装する方法を教えてください。

変数の型がbool であると仮定すると、私の理解が正しければ、変数ごとに2つのキーが必要なだけです:TRUE またはFALSEを 得ることができます。

 

同じような2つの配列のセル値を計算するために、同じ関数を異なる変数で使用する必要があります。配列は1次元である。

このような関数はどのように書けばよいのでしょうか?可能なのでしょうか?

Расчет_Массива(Массив_1, 5.0, 6.0);                       // Вызов функции

void Расчет_Массива(double array[], double A, double B)   // Сама функция
  {
   for (i=0; i<10; i++)
     {
      array[i]= A+B*i;
     }
  }

また、もっと多次元配列 で同じことができるのでしょうか?- 2、3次元。

--------------

アンパサンド(&)を追加しました。

void Расчет_Массива(double& array[], double A, double B)   // Сама функция

そして、それが機能する...: )))ただ、何のためにあるのか分からないので、類推(ゲージ法)で試しただけです。もし、教えていただけるなら、うれしいです。: ))

 
Chiripaha:

EAのパラメーターの値を変更できるように、チャート上にホットキーを実装する方法を教えてください - これは可能ですか? 何をする必要がありますか?

変数の型がbool であると仮定すると、私の理解が正しければ、1つの変数につき2つのキーが必要なだけです。

図書館は 役に立ちますか?

 // 2.2.3. Функция управляет горячими клавишами терминала МТ4.
 void ServiceMetaTraderHotKeys(int nKeyMode, // Код клавиши-модификатора. Может быть только предопределённым значением из:
                                             // VK_SHIFT, VK_LSHIFT, VK_RSHIFT, VK_CONTROL, VK_LCONTROL, VK_RCONTROL, VK_MENU, VK_LMENU, VK_RMENU, VK_LWIN, VK_RWIN.
                               int nKey);    // Код дополнительной клавиши.

 // 4.1.2. Функция управляет горячими клавишами на указанном графике.
 void ServiceChartHotKeys(int hwndChart, // Системный дескриптор окна, на котором применяются горячие клавиши.
                          int nKeyMode,  // Код клавиши-модификатора. Может быть только предопределённым значением из:
                                         // VK_SHIFT, VK_LSHIFT, VK_RSHIFT, VK_CONTROL, VK_LCONTROL, VK_RCONTROL, VK_MENU, VK_LMENU, VK_RMENU, VK_LWIN, VK_RWIN.
                          int nKey);     // Код дополнительной клавиши.
新バージョンからの記述です。貯金箱の中のパラメーターの配置が違う。
 
Zhunko:

図書館は 役に立ちますか?

これらの記述は新バージョンのものです。貯金箱にはさまざまなパラメータがあります。

はい、Vadimさん、この質問を書いたとき、ちょうどあなたのライブラリを見ていたんです。そして、半年以上前にダウンロードした(そして昨日も新しいのを見た)。ただ、使い方がわからないから、「どうすればいいのか」--ちょっとした例題のように聞いてみたのです。というのも、配列への関数は自分でできたのですが、ここは今の私のプログラミングのレベルではちょっと推し量るのが難しいのです。