[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 546

 
drknn >>:

Не вникал в логику Вашего цикла. Но при беглом взгляде бросилось в глаза то, что я подчеркнул Вам красной чертой. Если данные ДЦ не поменялись, то повторяем. А если поменялись? Что советнику делать если поменялись. Где команда?

Когда программист ложится спать, он ставит возле кровати два стакана. Один - с водой - на случай, если программист захочет пить. Другой - пустой - на случай, если программист не захочет пиь.

Шутка-шуткой, но в программинге взачастую приходится обрабатывать обе ветви древа дихтомического деления.

P.S.

Кстати, artmedia70, обратите внимание, как расположены скобки и отступы Вашего кода на моём скриншоте. При такой организации кода он беолее читабелен. Это Вам просто к информации.

______________________________________________________________________________________________________________________________________________________________________

Блин, чё-то у меня не пишет мои сообщения там, где нужно писать и не вставляет коды.
drknn, спасибо за информацию о структуировании моего кода. Я свой код практически также, как и вы составляю. Просто ну не даёт мне SRC вставить код и всё тут. Даже здесь приходится писать в вашем же сообщении, потому как за пределы этого поля меня не пускает, хоть тресни...
Это так, предисловие.
По поводу Вами подчёркнутого...
А какую я ему ещё команду должен дать, если ему ничего не нужно делать при невыполнении условия? И если условие, которое не выполняется, стоит перед закрывающей скобкой цикла то далее мы всё равно попадём на начало новой итерации при соблюдении условия цикла mode<=9...
При завершении итераций по условию mode<=9, переходим к следующей закрывающей скобке родительского цикла и переходим к следующему валютному инструменту пока Instr_Count (счётчик вал. инструментов) не закончится по условию ln<=Instr_Count... Разве не так? Или Вы предлагаете break использовать перед закрывающей скобкой?
Хотя... Ошибки там где-то у меня есть... При "повешеньи" советника на график у меня один за другим сыплются сообщения об открытии позиций, об изменениях минимальной дистанции и т.д. Причём даже не с приходом тика, а подряд, как из пулемёта... :)
Жаль знаний не хватает самому разобраться, а здесь сложно при невозможности (по-крайней мере у меня) разместить код, используя SRC.
В любом случае - спасибо за участие. Заставляет задуматься... ;)

 

TheXpert писал(а) >>

嘘つけ。


考えてみてください。情報が何ページにもわたっていると、心理的に情報を処理するのが難しく、全体像を分析するために常にコードを行ったり来たりする必要があります。しかし、人間はそれをするのはウサギでもカエルでもない。もちろん、3行で構成されるコードではなく、もっと複雑なものであれば、この限りではありません。

 
drknn писал(а)>>

スリッページでしょうか?

自動運転とはどういう意味ですか?自動とはどういう意味ですか?


ありがとうございます、そうでしょうね...。SLなら損失が増えるのは理解できるが、なぜTRだと利益が減るのか、それも大きくすべきなのか?

オートマトン」とは、自分ひとりで仕事をしている専門家のこと。

 
助けてマーチンで原始的なEAを作ろうとすると...。オーダーオープンエラー131が 表示されるのですが、どうしたのでしょうか?
ファイル:
 
GVA63 >>:


Спасибо, навeрноe Вы правы... хотя, ecли SL, то понятно - убыток увeличится, а почeму ТР умeньшаeт прибыль? по идee тожe должeн быть большe?

"автомат" - это экспeрт, работающий самостоятeльно.

どうやらスプレッドが跳ね上がっているようだ。
 

artmedia70、 振り出しに 戻りましたね。 まず、最も重要なのはアルゴリズムです。つまり、プログラムがどのように機能するかということです。明確なアイデアがなければ、プログラムにはなりません。どう動くかわからないコードは作れないのですから。

正しく動作しないコードの断片を一行ずつ解析してみましょう。しかし、最初から最後まで分解して考えてみましょう。つまり、なぜこの方法、ツール、アプローチを使うのか、その理由を非常に正確に説明することができるようになります。А?(これは観客のための作品ではなく、自分自身を理解するための試みです。プログラミングはまず瞑想であり、次に、ボルト、ナット、ダボ、ピン、その他の小さなものでつながれた細部の束なのです)。している?

 

ごきげんよう!!!

OrderMagicNumber()を使って、特定のローソク足ごとに計算する組み込み関数を作ろうと思っているので、ローソク足ごと、TFごとにユニークにすることが望ましい。
特に、2つの変数
intPeriod( ) と
datetime Time[i]
を貼り合わせて

xxxyyyyyy,
とする方法が見つからなかった。xxx は Period( ) から分、 yyyyyyy は Time[i] から秒とする。

どうすればより良い実装ができるか?

私はこんな初心者ですが :)

 
Gravitus >>:

Добрый день!!!

планирую использовать OrderMagicNumber(), сделать встроенную функцию для вычисления его для каждой конкретной свечи, так вот желательно чтобы для каждой свечи и тф он был уникальным.
в частности не нашел способа склеить 2 переменные
int Period( ) и
datetime Time[i]
к виду

xxxyyyyyyyyyy,
где ххх - минуты из Period(), а yyyyyyyyyy- секунды из Time[i]

как это лучше реализовать?

такой вот из меня начинающий :)


ピリオドは一桁に詰めることができますが、整数変数です。マジックでなぜdatetimeが必要かというと、注文の開始時刻をそのまま知ることができるからです。
 
splxgf >>:

Период это целочисленная переменная, хотя ее можно упаковать до одной цифры, а зачем в магике дататайм? время открытия ордера и так можно узнать.

目標は、与えられた時間枠の与えられたローソクにユニークなマジックナンバーを割り当てることであり、それは同一のオープン時間で2つのm15とh1ローソクに異なるはずです...。

だから、私の主なアイデアは、それを値に接続することです。

時間[]と

期間( )

マジックの視覚的実用性は重要ではないので、5~10文字のint形式の値にしたい気もしますが...。

エディット

----------

基本的に私はもう方法を見つけたのですが...。:)

 
drknn >>:

artmedia70, мы опять возвращаемся в точку отсчёта. Првое и самое главное - это алгоритм. То есть то, как должна работать программа. Если нет чёткого представления, то нет и программы, ибо нельзя сделать код, который не знаю как должен работать.

Давайте по-строчкам разберём кусочек Вашего кода, который работает не правильно. Только давайте разберём всё от и до. То есть, Вы будете предельно точным в обосновании почему Вы задействуете в этом месте именно этот способ, инструмент, подход. А? (Это не работа на публику - это попытка разобраться в самом себе - программинг - это сначала медитация, потом - кучка деталек, связанных болтиками, гаечками, шпонками, шпильками и прочей мелочёвкой). Делаем?

アルゴリズムはそこにある。そして、それが功を奏する。私はまだ勉強中なので、チュートリアルのコードを参考にして、自分に合うように修正しています。

Expert Advisor テンプレートは、現在の状態では、単にターミナルで何が起こっているかを検出し、画面上のすべてのイベントをインジケータウィンドウに表示する必要があります。

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//=================== ПОДКЛЮЧЕНИЕ ВНЕШНИХ МОДУЛЕЙ ================
//--------------------------------------------------------------- 2 --
#include <stdlib.mqh>
#include <stderror.mqh>
#include <WinUser32.mqh>
//--------------------------------------------------------------- 3 --
#include <Переменные.mqh>        // Описание переменных эксперта.   
#include <Терминал.mqh>          // Присоединение функции Terminal.
#include <События.mqh>           // Присоединение функции Sobytiya.
#include <Информ.mqh>            // Присоединение функции Inform.
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//
// 
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int init()  
   {
   Predopred();            // Предопределение некоторых переменных
   Level_old=MarketInfo(Symbol(),MODE_STOPLEVEL );//Миним. дистаниция
   Terminal();
   return;
   }
//=================================================================
int start() 
   {
   Terminal();                   // Эта функция стоит первой в ..
                                 // ..последовательности функций
// ...                           // Последующий код функции start()
   Events();                     // Функция обработки событий
// ...                           // Последующий код функции start()
   return;                                                                 
   }
//=================================================================
int deinit() 
   {   
// ...                                    // Код функции deinit()
   return;
   }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж

ターミナル - すべてのオープンポジションと設定された注文を考慮します。

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
/*
Соответствие элементов массивов Mas_Ord_New и Mas_Ord_Old характеристикам ордеров.
Таблица показывает расположение элементов массива для ордеров одного вал. инструмента.
Данные о других ордерах, открытых по другим вал. инструментам хранятся в таких же таблицах,
но на другой индексной плоскости трёхмерного массива и индексируются первым значением массива:
Mas_Ord_New [данные о вал. инстр.] [] []
=====================================================================================================================
|  |Не опред.|Курс открытия |StopLoss |TakeProfit |Номер ордера |Кол-во лотов |Тип ордера |MagicNumder |Коммент.|ТФ |
=====================================================================================================================
|N |    0    |       1      |     2   |     3     |      4      |      5      |     6     |      7     |    8   | 9 |
--------------------------------------------------------------------------------------------------------------------- 
|0 |         |              |         |           |             |             |           |            |        |   |
---------------------------------------------------------------------------------------------------------------------
|1 |         |              |         |           |             |             |           |            |        |   |
---------------------------------------------------------------------------------------------------------------------
|2 |         |              |         |           |             |             |           |            |        |   |
---------------------------------------------------------------------------------------------------------------------
......................
---------------------------------------------------------------------------------------------------------------------
|30|         |              |         |           |             |             |           |            |        |   |
=====================================================================================================================
В ячейке [0][0] хранится кол-во ордеров по данному вал. инструменту...

Самая первая индексная плоскость массива содержит дополнительную информацию по валютным инструментам и выглядет так:
===============================================================================================================================================
|  |Не опред.|MODE_POINT |MODE_DIGITS |MODE_SPREAD |MODE_STOPLEVEL |MODE_LOTSIZE |MODE_TICKVALUE |MODE_TICKSIZE |MODE_SWAPLONG|MODE_SWAPSHORT |
===============================================================================================================================================
|N |    0    |     1     |     2      |      3     |      4        |      5      |       6       |       7      |       8     |       9       |
----------------------------------------------------------------------------------------------------------------------------------------------- 
|0 | Кол-во  |           |            |            |               |             |               |              |             |               |
-----------------------------------------------------------------------------------------------------------------------------------------------
|1 | EURUSD  |           |            |            |               |             |               |              |             |               |
-----------------------------------------------------------------------------------------------------------------------------------------------
|2 | USDCHF  |           |            |            |               |             |               |              |             |               |
-----------------------------------------------------------------------------------------------------------------------------------------------
......................
-----------------------------------------------------------------------------------------------------------------------------------------------
|15| AUDCAD  |           |            |            |               |             |               |              |             |               |
===============================================================================================================================================
В ячейке [0][0][0] содержится информация об общем кол-ве всех ордеров и позиций в терминале
В ячейке [][здесь][] содержится наименование валютного инструмента
В ячейке [][][здесь] содержится дополнительная информация о финансовых инструментах от ДЦ


*/
int Terminal()
   {
//============================================== Предопределения ====================

   ArrayCopy(Mas_Ord_Old, Mas_Ord_New);         // Сохраняем предыдущую историю

   ArrayInitialize(Mas_Ord_New,0);              // Обнуление массива текущих ордеров

//=============================================== Анализ ордеров ===============================

   for (int i=0; i<OrdersTotal(); i++)          // По всем ордерам терминала
      {
      if(OrderSelect(i, SELECT_BY_POS)==true)   // Если ещё есть живой ордер

         {
//---------------------------- Определение индекса валютного инструмента -----------------------

         string Symb=OrderSymbol();             // Выясним валюту текущего выбранного ордера

         for (int ind=1; ind<=Instr_Count; ind++)//Instr_Count=кол-ву вал. инструментов в ф-ции Predopred (Переменные)
                                                // Поиск по массиву вал. инстр.
            {
            if (Symb==Instrument[ind])          // Индекс определён, поиск закончен

               break;                           // Выходим из цикла по ind                                   

            }
//---------------------- Формирование нового массива ордеров -----------------------------------

         Mas_Ord_New[0][0][0]++;        // Считаем общее количество ордеров в терминале и заносим в ячейку [0][0][0]

         Mas_Ord_New[ind][0][0]++;      // Считаем колич.орд. по валют.паре

         int k=Mas_Ord_New[ind][0][0];  // Формальная переменная
         
         Mas_Ord_New[ind][k][1] = NormalizeDouble(OrderOpenPrice(),  // Курс откр. ордеров
                                                  Digits); 

         Mas_Ord_New[ind][k][2] = NormalizeDouble(OrderStopLoss(),   // Курс SL
                                                  Digits); 

         Mas_Ord_New[ind][k][3] = NormalizeDouble(OrderTakeProfit(), // Курс ТР
                                                  Digits); 

         Mas_Ord_New[ind][k][4] = OrderTicket();      // Номер ордера
         Mas_Ord_New[ind][k][5] = OrderLots();        // Колич. лотов
         Mas_Ord_New[ind][k][6] = OrderType();        // Тип ордера
         Mas_Ord_New[ind][k][7] = OrderMagicNumber(); // Магическое число
 
         if (OrderComment()=="")
            Mas_Ord_New[ind][k][8]=0;                 // Если нет коммент
         else
            Mas_Ord_New[ind][k][8]=1;                 // Если есть коммент
            
         // Здесь нужно занести информацию о принадлежности к ТФ из Mas_Ord_Old. Я не знаю правильно ли...
         
         // int t=Mas_Ord_Old[ind][k][9];                // t= значению ячейки [][][9] из старого массива 
         // Mas_Ord_New[ind][k][9]=t;                    // запишем её в новый массив
         
         // Или так, даже скорее всего, именно так...
         
         Mas_Ord_New[ind][k][9]=Mas_Ord_Old[ind][k][9];
         
//-----------------------------------------------------------------
         }
      }
//=================================================================
   return;//();
   }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж