[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 491

 
merkulov.artem:
こんばんは!質問です、EAを使う場合。証券会社は、エキスパートアドバイザーのアルゴリズムや計算方法(指標、過去データの分析)、すなわちエキスパートアドバイザーのコード全体を見ることができるのでしょうか?それとも、証券会社が受け取るのは、ポジションのオープン、変更、クローズといったコマンドに関する情報のみですか?
いいえ、DCはExpert Advisorの動作過程には入り込めません。証券会社のサーバーは、お客様のMTからの指令(買い、売りなど)を受けるだけです。
 
ребята!!!!!! где можно скачать простой советник МА при пересечении 2х линии по последним данным? большенство работают по средней линии которые взяты из истории котировок. и желательно такой же индикатор 
 
bikrus13:
最近のデータとはどういう意味ですか?最新のデータは?歴史からではなく、未来から?)最近のデータとはどういう意味ですか?ただ、気になるのは、初めて「聞いた」ことです。
 
kakin:
最新データとはどういう意味ですか?最新のデータは?指定する。ただ、気になるのは、初めて「聞いた」ことです。

例えば、端末の履歴を完全に削除してしまった場合、チャートを開くと、過去にスクロールして履歴を作成しなければなりません。この場合、平均成分は履歴がどの日に始まったかを0から始めます。
 

デモチャートで、EAが適切なタイミングでプリンターを送ることを禁止することは可能かどうか、教えてください。チャートから削除してもいいかもしれませんね。この機能では、完全に停止するのではなく、次のティックまでしか停止しないと思うのですが、停止するのでしょうか?BreakPoint()です。

void BreakPoint(){//if (!IsVisualMode()) return(0);
keybd_event(19,0,0,0);
Sleep(10);
keybd_event(19,0,2,0);}                    
 
どうやら止められないようですが、プログラム的にロボットをタイミングよくチャートから外すことも可能なのでしょうか?
 
bikrus13:

例えば、ターミナルから履歴を完全に削除してしまうと、チャートを開いたときに、スクロールで過去にさかのぼって自分で履歴を作らなければなりません。平均成分は、履歴がどの日に始まったかをゼロから始めます。約2ヶ月です。1分足のチャートに1000の期間のMAを取ると、1週間と1ヶ月の履歴で、両者は違ってきます。これが問題です。最新の相場データでインジケータを作れば、もっと正直に表示されます
))))))))))))))))))))))))))))))))))))))唯一のアドバイスは、恐ろしい移動平均 線とその計算方法についてインターネットで読むことです。平均律の勉強に重点を置く。脳にはとても負担がかかると思いますが、多くの疑問は自ずと解消されるはずです。
 

現在、あるEAがとてもよく書けているので、ソースコードを理解するという意味で勉強中です。

しかし、そこで一つ不思議なことがあります。

void FindOrders()
{
// - 1 - == Инициализация переменных перед поиском ======================================
   int total = OrdersTotal() - 1;
   g_type = -1;                                    // На текущий момент у нас нет позиций
// - 1 - == Окончание блока =============================================================
 
// - 2 - == Непосредственно поиск =======================================================
   for (int i = total; i >= 0; i--)                // Используется весь список ордеров
      if (OrderSelect(i, SELECT_BY_POS))           // Убедимся, что ордер выбран
         if (MathFloor(OrderMagicNumber()) == i_magicNumber &&// Ордер открыт
             OrderSymbol() == Symbol())            // ..экспертом, который прикреплен к..
         {                                         // ..текущей паре
            g_ticket = OrderTicket();              // Запишем данные ордера
            g_type = OrderType();
         } 
// - 2 - == Окончание блока =============================================================
}

なぜ、OrdersTotal()だけでなくOrdersTotal() - 1 に全注文の数が代入されているのですか?

なぜなら、もし合計で 0 件の注文が あれば、totalの 値は0ではなく- 1になるからです。

 
hoz:

現在、あるEAがとてもよく書けているので、ソースコードを理解するという意味で勉強中です。

しかし、そこで一つ不思議なことがあります。

なぜ、OrdersTotal()だけでなくOrdersTotal() - 1 に全注文の数が代入されているのですか?

なぜなら、もし合計で0 件の注文があれば、totalの 値は0ではなく- 1になるからです。

その後、その合計がどこで使われているかを確認します。ほとんどの場合、その後、注文をループで処理します for (i=0; i<=total; i++).
 
paladin80:
トータルがその後どこで使われるかを見てください。最も可能性が高いのは、その後、ループが注文を通過する for (i=0; i<=total; i++). .

ところで、そうだ...この関数の全コードを上に追加済みです。

void FindOrders()
{
// - 1 - == Инициализация переменных перед поиском ======================================
   int total = OrdersTotal() - 1;
   g_type = -1;                                    // На текущий момент у нас нет позиций
// - 1 - == Окончание блока =============================================================
 
// - 2 - == Непосредственно поиск =======================================================
   for (int i = total; i >= 0; i--)                // Используется весь список ордеров
      if (OrderSelect(i, SELECT_BY_POS))           // Убедимся, что ордер выбран
         if (MathFloor(OrderMagicNumber()) == i_magicNumber &&// Ордер открыт
             OrderSymbol() == Symbol())            // ..экспертом, который прикреплен к..
         {                                         // ..текущей паре
            g_ticket = OrderTicket();              // Запишем данные ордера
            g_type = OrderType();
         } 
// - 2 - == Окончание блока =============================================================
}

このように書かない方が論理的だと思ったからです。

int total = OrdersTotal() - 1;

というように、ループを設定します。

for(i=total; i>=1; i--)

そうだろ?ただ、ポジション数の カウンターが0からだと、なぜかあまりうまく認識されない...論理的ではないので、なぜ自分を混乱させるのか......。