[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 214

 
artmedia70:

例えば、EA名、通貨ペア、搭載TFをもとに、EAに固有のマジックナンバーを自動的に割り当てる機能。

コール



また、CRC32を使用してMagicianを割り当て、一意であることを確認することができます。また、過去に保存したデータやインターネット経由で他の端末から受信したデータの整合性をすぐに確認することができます。この場合、darb all function)))となります。賢く使う)。

int crc_table[256];
 
/* Run this function previously */
void make_crc_table() 
{
    for (int i = 0; i < 256; i++) {
        int c = i;
        for (int j = 0; j < 8; j++) {
            if(c & 1 != 0)
               c = 0xEDB88320 ^ (c >> 1);
            else 
               c = c >> 1;
        }
        crc_table[i] = c;
    }
}
 
bool table_filled = false;

int crc32(string buf) 
{
    if(!table_filled)
    {
      make_crc_table();
      table_filled = true;
    }
    
    int len = StringLen(buf);
    
    int c = 0xFFFFFFFF;
    for (int i = 0; i < len; i++) {
        c = crc_table[(c ^ StringGetChar(buf,i)) & 0xFF] ^ (c >> 8);
    }
    return (c ^ 0xFFFFFFFF);
}
 
alsu:

そして、CRC32を使ってMagicianを割り当てることで、一意性を確保することもできます。また、過去に保存したデータやインターネット経由で他の端末から受信したデータの整合性をすぐに確認することができます。この場合、darb機能は誰でも利用可能です))))賢く使う)。


Alexeyさん、興味深い、よくできた機能をありがとうございます。拝見させていただきます。私自身も似たようなことを考えていたのですが、ここにきて実現しました。

さて、ここからが本題です。


ビクター、私もDockで探しましたよ。で、これらのコードは、手動取引に使っていたCodeBaseのインジケータで見たものです。しかし、それは決して万能ではないことがわかった。そこで、ほとんどすべてのインジケータを捨て、今ではExpert Advisorはそれ自体がインジケータであり、他のものはほとんど必要ないのです

ちなみに、Baseを掘り返してみると、いろいろと勉強になりますよあなた自身がエキスパートでなければ、ドックのすべてを理解することはできないのです教科書にはもっと詳しいことが書いてあるのですが、足りないものがたくさんあるんです


ボリス 私自身は、インジケーターはあまり使っていないんです。ダッシュでなければ...。そして、文字列の関数は他の目的でも必要です。上に書きました。これです。

ホズ

だから、ここhttps://www.mql5.com/ru/articles/1524 のように、いろいろと曲がったコードを読まないように。

(そこで気づいたのですが、バグの多さ。また、一般的に、作者が何を考えてこのコードを書いたのか、私にはわかりません)。

このバリアントのアルゴリズムのヒントを教えてください。保留中の注文が、例えばトレンドラインなどのオブジェクトに従うようにしたいのですが。あるいは、保留中の注文がラインの後ろにあった。

どのように実装されているのですか?よくわからないのです。

オブジェクトを作ればいいというのは理解できました。でも、価格がオブジェクトの "後ろ "にある場合は、何かしなければならないし、価格がライン上にある場合は、保留中の注文がその上にある...というように、何とか指定しなければなりません。

 

友よ、ヒントをくれませんか?

端末の動作をすべて書き込むプログラムはないのですか?

あるいは、EAがサーバーから独立してログを書き込む ようにするにはどうしたらよいでしょうか。

 
polycomp:
分かりやすい説明ありがとうございましたライブラリでスタティックを使わない方が良さそうですね。


そして、その外でも使わないでください。MT4では、Staticタイプの変数は決して再初期化されません。
 
herhuman:

EAがサーバーと独立してログを書き込むようにするにはどうしたらいいですか?

そうなんです。
 
hoz:


まずは、自分が何をしたいのかを明確にすることです。幾何学的な アプローチも歓迎します。
 
hoz:


アレクセイ、興味深く、知的な特集をありがとうございました。見てみようかな。私自身、似たようなアイデアを考えていたのですが、それがこれです。


ボリス 私自身は、インジケーターはあまり使っていないんです。ウェービングマシンでなければ...。そして、文字列の関数は他の目的でも必要です。上に書きました。これです。


ビクター 私も扱ったことはないですね、Baseでたくさん見てきました。私の理解では、ラインによるプライスクロスオーバーはスワイプと同様です。また、あなたの注文とポジションのパラメータなどでラインのクロスオーバーをキャッチしてください。掘り出せ!
 

拝啓、初心者のため、以下の質問にお答えいただけないでしょうか。

if (((Bid>1.2153)&&(Bid<1.2160) || (Bid>1.2173)&&(Bid<1.2180))|| ( (Bid>1.2100)&&(Bid<1.2180))))2107) ||(Bid>1.2094)&&(Bid<1.2101))||(((Bid>1.2092)&&(Bid<1.2099) || (Bid>1.2091)&&(Bid<1.2101)) || (Bid<1.2092)&&(Bid<1.2099))2098))||((Bid>1.2073)&&(Bid<1.2080)||(Bid>1.2005)&&(Bid<1.2012))) // もし価格がifヘッダーに書かれた条件のいずれかに一致するならば 、その場合

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //注文をオープン

繰り返しのない条件データが約3000個あるので、それらをすべて1次元配列にしました

ダブルマシブ[3000]。

if ((Bid==masiv[5])) // 価格が インデックス 5の 配列要素の 値に対応 する 場合

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //注文をオープン します。

質問:次のコマンドを記述するために、どのコードを使用することができますか?

価格が配列 double masiv [ 3000 ]の非繰り返し値のいずれか1つの 値に一致する場合

注文を開始する。

最も簡単な方法は、3000の条件をif(......)ヘッダーに記述することです。

しかし、おそらくもっとコンパクトなコードのバリエーションがあるのでしょう。

お世話になりました


 
solnce600:

親愛なる皆様、新参者に この質問の答えを教えていただけませんか?

if (((Bid>1.2153)&&(Bid<1.2160 )|| (Bid>1.2173)&&(Bid<1.2180))|| ( (Bid>1.2100)&&(Bid<1.2180))))2107) ||(Bid>1.2094)&&(Bid<1.2101))||(((Bid>1.2092)&&(Bid<1.2099) || (Bid>1.2091)&&(Bid<1.2101)) || (Bid<1.2092)&&(Bid<1.2099))2098))||((Bid>1.2073)&&(Bid<1.2080)||(Bid>1.2005)&&(Bid<1.2012))) // もし価格がifヘッダーに書かれた条件の1つにマッチ するならば。

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //注文を出す

繰り返しのない条件データが約3000個あるので、それらをすべて1次元配列にしました

ダブルマシブ[3000]。

if ((Bid==masiv[5])) // 価格が インデックス5の配列要素の値に対応 する 場合

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //注文をオープン します。

質問:次のコマンドを記述するために、どのコードを使用することができますか?

価格が配列 double masiv [ 3000 ]の非繰り返し値のいずれか1つの 値に一致する場合

注文を開始する。

最も簡単な方法は、3000の条件をif(......)ヘッダーに記述することです。

しかし、おそらくもっとコンパクトなコードのバリエーションがあるのでしょう。

お世話になりました




必要であれば、解決策を見出すことができます。例えば、整数の順序付き配列に切り替えます。その中から目的の値を探します。
 
solnce600:

親愛なる皆様、新参者に この質問の答えを教えていただけませんか?

if (((Bid>1.2153)&&(Bid<1.2160) || (Bid>1.2173)&&(Bid<1.2180))|| ( (Bid>1.2100)&&(Bid<1.2180)) || ((Bid>1.2100)&(Bid<1.2180))2107) ||(Bid>1.2094)&&(Bid<1.2101))||(((Bid>1.2092)&&(Bid<1.2099) || (Bid>1.2091)&&(Bid<1.2101)) || (Bid<1.2092)&&(Bid<1.2099))2098))||((Bid>1.2073)&&(Bid<1.2080)||(Bid>1.2005)&&(Bid<1.2012))) // もし価格がifヘッダーに書かれた条件の1つにマッチ するならば。

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //注文を出す

繰り返しのない条件データが約3000個あるので、それらをすべて1次元配列にしました

ダブルマシブ[3000]。

if ((Bid==masiv[5])) // 価格が インデックス5の配列要素の値に対応 する 場合

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //注文をオープン します。

質問:次のコマンドを記述するために、どのコードを使用することができますか?

価格が配列 double masiv [ 3000 ]の非繰り返し値のいずれか1つの 値に一致する場合

注文を開始する。

最も簡単な方法は、3000の条件をif(......)ヘッダーに記述することです。

しかし、おそらくもっとコンパクトなコードのバリエーションがあるのでしょう。

お世話になりました



ループです。

   double massiv[];  
//----------------------------------------------------------------------
   for (int i=0; i<ArrayRange(massiv,0); i++) {
      if (MathAbs(NormalizeDouble(Bid-massiv[i],Digits))<=0.5*Point) {
         // цена примерно совпадает со значением в massiv[i]
         // ... обрабатываем совпадение
         }
      }
//----------------------------------------------------------------------