Yapı kayaları. Programları yapılandırmayı, olasılıkları, hataları, çözümleri vb. keşfetmeyi öğreniyoruz. - sayfa 6

 
FAQ :

not. Ama voosche melenko böyle, hadi daha küresel bir sorunumuz olsun?

Belirli bir teklifiniz var mı?
 
MetaDriver :

Pekala, tady prick (genel anlamda) bu boşlukları ilk dörde nasıl yerleştirirsiniz? Her şey DLL'lerde mi? :)

Olay işleme için DLL yok, saf MCL + winepi.

Bununla ilgili olarak, her şeyi güzelce anlatmak ve harika bir makale yapmak için zaman bulmalıyız. MT4 için görsel sözde sınıfların bir örneğini veya uygulamasını atabilirim, ancak korkarım ayrıntılı bir açıklama olmadan sindirmek zor olacaktır. MT için JS'ye benzeterek bir DOM (Veri Nesnesi Modülü) oluşturmanın özü - zaten gerçekten benzerler. Tohum için - tabiri caizse kalbin ana işlevi:

 //+------------------------------------------------------------------+
//| Brief Description included Functions                             |
/*+----exported function---------------------------------------------+
bool   ObjSet(ObjNm,ObjTyp,isets[],tsets[],{ObjParent})Устанавливает на график объект класса Interface.
void   ObjDelete(string nm,bool delChild=true) Удаляет объект с графика, вместе , или без первого потомка
void   ObjsDelete(string nm) Удаляет объект, вместе со всеми его потомками
double ObjGet(string nm, int prop_id) Ищет объект и возвращает значение его свойства
bool   ObjSearch(string ObjNm):int[];string; Возвращает признак наличия объекта класса Interface
int    This(int prop_id) Ищет значение свойства объекта в списке свойств : obj_props[10]
//+----internal function---------------------------------------------+
string ObjGetName(string,int[],{string})  Собирает полное имя объекта класса Interface
void   ObjSetLabel()Обертка для стандартной функции
*/ //+----------------------------------------------------------------+
//|                                      OBJECTS_INTERFACE_CLASS.mq4 |
//|           Copyright © 2012, XrustSolution. mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, XrustSolution."
#property link        "mail: xrustx@gmail.com https://www.youtube.com/user/opmlv http://forexrust.info"
//+------------------------------------------------------------------+
//|   Extern variables                                               |
//+------------------------------------------------------------------+
extern    string    ObjectsInterfaceSettings = "-------- ObjectsInterfaceSettings ----------" ;
extern    int       X_Distance                                = 2       ;
extern    int       Y_Distance                                = 2       ;
extern    int       ChartCorner                               = 0       ;

//+------------------------------------------------------------------+
//|   Defines                                                        |
//+------------------------------------------------------------------+
#define GlobalPrefix     "wnd:"    // Префикс имени класса
#define GlobalParent     "chart"    // Имя глобального родителя
#define hName           "Header" // Имя главного родителя (заголовка)
#define wName           "Window" // Имя главного окна
#define cName           ""        // Стандартное имя текущего объекта
#define tName           "Txt"    // Стандартное имя для текстовой строки
#define Objects 500                // Максимальное количество командных объектов
//+------------------------------------------------------------------+
//|   Global variables                                               |
//+------------------------------------------------------------------+
string ObjParent = "" ;           // Глобальное имя родителя Object Parent Name
string ObjName   = "" ;           // Глобальное имя объекта  Object Own Name
int     obj_props[ 10 ];             // Набор свойств объекта : {xdLeft,ydUp,xdRight,ydDown,zIndex,Class,Corner,Color,Window};
//+------------------------------------------------------------------+
string   ObjsParent[Objects];     // Список имен родителей командных объектов
string   ObjsNames[Objects];       // Список имен командных объектов
int      CommObjs[Objects][ 6 ];     // Список параматров командных объектов = {класс,угол,х0,у0,х1,у1}
string   ObjsDom[Objects][ 2 ];     // Список всех объектов и их дочерних элементов (объектов) ObjsDom[Parent][Childrens]
string   ObjsDel[ 5000 ];           // Список старых объектов для удаления при перемещении окон  
string   ObjsName[ 5000 ];       // Список полных имен объектов
//+------------------------------------------------------------------+
//|   Defines                                                        |
//+-----ObjectsTypes-------------------------------------------------+
#define         OBJ_CANVAS       30        // Холст\Окно\Прямоугольник (Основной элемент)
//+---Предопределенные типы окон-------------------------------------+
#define         OBJ_WINDOW     31 // Пустое окно
#define         OBJ_TXTWND     32 // Текстовое окно с форматированием текста
#define         OBJ_HTMWND     33 // Текстовое окно с форматированием, активными ссылками
#define         OBJ_CHARTW     34 // Псевдографическое окно с возможностями граф построений
//#define       OBJ_LEDWND     34 // 

//+---Кнопки командные-----------------------------------------------+ 
#define   OBJ_BUTTON      40 // Кнопка (пустая) общего назначения
//----Кнопки предопределенные(Команда)
#define   OBJ_BUTBUY     41 // OP_BUY
#define   OBJ_BUTSEL     42 // OP_SELL
#define   OBJ_BUTCLO     43 // ORDER_CLOSE
#define   OBJ_BUTREV     44 // ORDER_REVERSE
#define   OBJ_BUTBST     45 // OP_BUYSTOP
#define   OBJ_BUTBLM     46 // OP_BUYLIMIT
#define   OBJ_BUTSST     47 // OP_SELLSTOP
#define   OBJ_BUTSLM     48 // OP_SELLLIMIT
#define   OBJ_BUTDEL     49 // ORDER_DELETE
//+---Ярлыки командные (кнопки 1х1 с значком)------------------------+
#define   OBJ_LABCNT     50 // Командный ярлык (Контрол) Без обкладки в виде канваса 1х1 наследие двигательного аппарата команд
#define   OBJ_LABCOM     51 // Командный ярлык кнопка 1х1 с канвасом (пустой) 
//----Ярлыки предопределенные(Команда)
         /*----Группа ярлыков кнопок находящихся в заголовке (верхнем меню)---*/
#define   OBJ_LABCLO     52 // Ярлык/Кн.закрыть
#define   OBJ_LABHID     53 // Ярлык/Кн.Свернуть
#define   OBJ_LABSHW     54 // Ярлык/Кн.развернуть
#define   OBJ_LABSET     55 // Ярлык/Кн.Настройки
         /*----Двухцветные ярлычки (триггеры(серый\зеленый))----*/
#define   OBJ_LABALR     56 // Ярлык/Кн.Алерт
#define   OBJ_LABSND     57 // Ярлык/Кн.Звук
#define   OBJ_LABEML     58 // Ярлык/Кн.Мыло
#define   OBJ_LABSEL     59 // Ярлык/Кн.Select\Unselect
         /*----Группа ярлыков стрелок и др предустановленных спец символов---*/
#define   OBJ_LABLFT     60 // Ярлык/Стрелка Влево
#define   OBJ_LABRGT     61 // Ярлык/Стрелка Вправо
#define   OBJ_LABUP       62 // Ярлык/Стрелка Вверх
#define   OBJ_LABDWN     63 // Ярлык/Стрелка Вниз
     
#define   OBJ_LAB_TXT     69 // Текстовая строка / значек в ярлыке
//+----Хидеры(заголовки)-Основной родительский объект, наследует все остальные+
#define   OBJ_HD         70 // Пустой хидер (прямоугольник 1 размера блока)
#define   OBJ_HDC         71 // + Кнока закрытия
#define   OBJ_HDH         72 // + Кнопка свернуть\развернуть
#define   OBJ_HDCH       73 // + закрыть + развернуть
#define   OBJ_HDCHT       74 // + закрыть + развернуть + настройки
#define   OBJ_HDСHTS     75 // + закрыть + развернуть + настройки + системное меню алертов
//+-----ObjectProperties---------------------------------------------+
#define   OBJ_PRP_X0         17    // левая координата (Х0)
#define   OBJ_PRP_Y0         18    // верхняя координата (Y0)
#define   OBJ_PRP_X1         19    // правая координата (Х0) 
#define   OBJ_PRP_Y1         20    // нижняя координата (Х0)
#define   OBJ_PRP_ZI         21    // Зет Индекс
#define   OBJ_PRP_CLS         22    // Класс Объекта
#define   OBJ_PRP_CRN         23    // Угол привязки объекта
#define   OBJ_PRP_CLR         24    // Цвет
#define   OBJ_PRP_WND         25    // Окно в котором объект находиться
#define   OBJ_PRP_LAY         26    // Резерв (здесь будет количество слоев, для более точного определения параметров элементов)
//+-----Массив аргументов для функции GetObjectName()----------------+
int      Props[ 10 ];                                                      
//              Props[0] = Лево         
//              Props[1] = Верх 
//              Props[2] = Право        
//              Props[3] = Низ  
//              Props[4] = Счетчик по Х 
//              Props[5] = Счетчик по У 
//              Props[6] = Зет индекс (основной)        
//              Props[7] = Зет индекс (дополнительный для объектов из нескольких слоев) 
//              Props[8] = Идентификатор зет индекса последнего (верхнего) слоя в объекте
//              Props[9] = Идентификатор типа объекта                                           
//+---Массивы с корректыми размерами шрифтв Webdings для >= 416 билда---------------+
int realSz[ 21 ] = { 15 , 23 , 31 , 35 , 43 , 47 , 55 , 67 , 75 , 83 , 87 , 91 , 95 , 99 , 119 , 123 , 127 , 143 , 148 , 156 , 164 }; // Таблица реальных размеров
int fontSz[ 21 ]  = { 11 , 17 , 23 , 26 , 32 , 35 , 41 , 50 , 56 , 62 , 65 , 68 , 71 , 74 , 89 , 92 , 95 , 107 , 110 , 116 , 122 }; // Таблица корректных шрифтов
int szCorr[ 21 ] = { 4 , 5 , 6 , 7 , 9 , 10 , 12 , 15 , 17 , 19 , 20 , 21 , 22 , 23 , 28 , 29 , 30 , 34 , 36 , 38 , 40 }; // Разница между размером шрифта, и реальным размером
int vertCr[ 21 ] = {- 3 ,- 2 ,- 1 ,- 1 ,- 2 , 0 ,- 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,   0 , - 1 ,   0 ,   0 ,   0 ,   0 ,   0 }; // Таблица cмещения по вертикали от размера шрифта

//+------------------------------------------------------------------+
//|  Includes                                                        |
//+------------------------------------------------------------------+
#include <OBJ_CANVAS.mqh> //SetCanvas(onm,xd,yd,xs,ys,[sz,zindx,oClr,crn,wnd,pnm,bord,bClr]);
#include <OBJ_LAB_TEXT.mqh> //SetTextString(onm,pnm,typ,txt,fnm,clr,[center,xd,yd,psz,fsz,crn,wnd]):int:error;
//#include <OBJ_BUTTON.mqh>//SetButton(onm,pnm,type[,xd,yd,xs,ys,text,tx_fnt,txClr,sz,bgClr,bdClr,crn,wnd]);
#include <OBJ_HEADER.mqh>
#include <OBJ_LED_SIMPLE.mqh>
//+------------------------------------------------------------------+
//|           Function  : string GetObjectName(string,int[],{string})|
//|           Copyright © 2012, XrustSolution. mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
//|                     Собирает полное имя объекта класса Interface |
//+------------------------------------------------------------------+
//|Полное имя объекта должно состоять из :                           |
//|wnd:        = Основной префикс имени                         4 зн |
//|z_0ax:      = Z индекс для опр. порядка отображения окна 1-9 6 зн |10 зн
//|c_30:       = Тип объекта класса (смотреть в списке типов)   5 зн |15 зн
//|lu_xxx_yyy: = Координаты левого верхнего угла               10 зн |25 зн
//|rd_xxx_yyy: = Координаты правого нижнего угла               10 зн |35 зн
//|id_xxx_yyy: = Номера объектов                               10 зн |45 зн
//|#name|parent= Собственное имя обьекта из максимум 15 знаков,    до|60 зн
//|состоящее из имени элемента класса, и имени родительского объекта |
//+------------------------------------------------------------------+
//|Разделители:  типов свойств     = двоеточите(:),                  |
//|              значений свойств  = нижнее подчеркивание(_)         |
//|              имя объекта       = решетка(#)конец описания свойств|
//|              имя родителя      = слеш[|]                         |
//+------------------------------------------------------------------+
string     ObjGetName( string Name,                                   // Имя объекта
                                                         int       Props[],                                 // Набор свойств объекта
                                                         string Parent = GlobalParent                   // Имя родителя, по умолчанию = "chart" , то есть основное окно графика
                                                        ){ string out= "" ;
//+------------------------------------------------------------------+
   if (Parent== "" ){Parent = "chart" ;}
   if (Props[ 9 ]!=OBJ_LAB_TXT){ // если объект текстовая строка добавляем в описание имя шрифта
        out = StringConcatenate (GlobalPrefix,                                   //
                                                                         "z_" ,Props[ 6 ],StringSetChar( "" , 0 ,Props[ 7 ]+ 97 ),StringSetChar( "" , 0 ,Props[ 8 ]+ 97 ), ":" ,
                                                                         "c_" ,Props[ 9 ], ":" ,
                                                                         "lu_" ,Props[ 0 ], "_" ,Props[ 1 ], ":" ,
                                                                         "rd_" ,Props[ 2 ], "_" ,Props[ 3 ], ":" ,
                                                                         "id" ,Props[ 4 ], "" ,Props[ 5 ], ":" ,
                                                                         "#"   ,Name    , "|" ,Parent);
        } else { // работаем как обычно
        out = StringConcatenate (GlobalPrefix,                                   //
                                                                         "z_" ,Props[ 6 ],StringSetChar( "" , 0 ,Props[ 7 ]+ 97 ),StringSetChar( "" , 0 ,Props[ 8 ]+ 97 ), ":" ,
                                                                         "c_" ,Props[ 9 ], ":" ,
                                                                         "lu_" ,Props[ 0 ], "_" ,Props[ 1 ], ":" ,
                                                                         "fn_font_name:" ,
                                                                         "id" ,Props[ 4 ], "" ,Props[ 5 ], ":" ,
                                                                         "#"   ,Name    , "|" ,Parent);
        }                                                               
         return (out);
}
MetaSürücü :
Belirli bir teklifiniz var mı?

Var ve görev canlı, ama burada telaffuz etmekten korkuyorum, kişisel olarak yapabilirim.

 
C-4 :
Artık hiçbir normal programcı akış şeması çizmiyor. Bütün bunlar, okul çocuklarına öğretmek için tasarlanmış teorik saçmalıktır, ancak gerçek projelerde çalışmak için değil.
Bu saçmalık değil. Bu, programlar makine kodlarında yazıldığında gerekliydi. Sonra ders kitaplarına sürüklendiler ve programları normal dillerde anlattıklarında saçma sapan oldular. Ayrıca böyle bir ESPD vardı - birleşik bir program dokümantasyon sistemi. Ve programı müşteriye teslim etmek için çok katı kurallara göre düzenlenmesi gerekiyordu. Ve blok diyagram her türden açıklama olmak zorundaydı.
 
FAQ :

Olay işleme için DLL yok, saf MCL + winepi.

Bununla ilgili olarak, her şeyi güzelce anlatmak ve harika bir makale yapmak için zaman bulmalıyız. MT4 için görsel sözde sınıfların bir örneğini veya uygulamasını atabilirim, ancak korkarım ayrıntılı bir açıklama olmadan sindirmek zor olacaktır. MT için JS'ye benzeterek bir DOM (Veri Nesnesi Modülü) oluşturmanın özü - zaten gerçekten benzerler. Tohum için - tabiri caizse kalbin ana işlevi:

Evet ushsh .. Büyük ölçekte. ))

DOM güçlüdür. En azından birkaç ekran görüntüsü falan alalım... Nasıl göründüğüne bir bakın. Veya (varsa) bu şeyi terminalde hissetmek için bağımsız bir derlenmiş örnek. Bir tane var mı?

 
MetaDriver :

Evet ushsh .. Büyük ölçekte. ))

DOM güçlüdür. En azından birkaç ekran görüntüsü falan alalım... Nasıl göründüğüne bir bakın. Veya (varsa) bu şeyi terminalde hissetmek için bağımsız bir derlenmiş örnek. Bir tane var mı?

buraya bakın: https://www.youtube.com/user/opmlv orada nasıl geliştiğini görebilirsiniz :)
Rustamzhan Salidzhanov
Rustamzhan Salidzhanov
  • www.youtube.com
Краткая сборка софта созданного мной , для торговой платформы MetaTrader 4. Все имущественные права на данный софт принадлежат заказчикам, как правообладателям. И не могут быть переданы третим лицам без их (правообладателей) согласия. Я за собою оставляю авторское право как создатель данного софта. Quick assembly of software created by me for...
 
MetaDriver :

Bulmacayı patlatalım mı?

Hiç bir şey.

1. Panelin hemen kuyruğuna. strateji önceliklidir, saban sürmezse panel anlamsız ve yararsızdır.

2. Ticaret bölümünün uygulanması stratejiye bağlıdır, bu nedenle varsayımsal bir stratejiye saldırının bir parçası olarak tartışılacak hiçbir şey yoktur. Garip bir şekilde stratejinin uygulanması da stratejiye bağlı :)

3. Ticaret bloğunda dikkate alınan stratejiyi devre dışı bırakmak için hemen bir tetikleyici oluşturun. Ve yeni siparişlerin yerleşimini devre dışı bırakın.

4. Panel. Panel bir rutin.

 

TS'yi yazmaya gelince, şöyle bir şey:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MT5'te Yüksek Frekanslı Ticaret Tartışması

hrenfx , 2013.02.06 14:30


Простой и довольно эффективной логикой написания боевого робота является следующая схема:
- робот делится на две части: тестер и синхронизатор.
- тестер на основании ранней истории и только что пришедшей выдает текущее состоянии торговой стратегии.
- синхронизатор "переносит" текущие тестерные открытые позиции и приказы на реал.

Это чем-то напиминает копирование торговых сигналов с одного счета на другой. Только вместо примитивного копировщика работает грамотный синхронизатор.

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

Но и такая логика построения боевого-робота далеко не совершенна, т.к. встает дилема первичности курицы и яйца. Поэтому применяются более сложные свои схемы, основанные на опыте автора-алготрейдера.

Все эти действия совершаются только ради одного - адекватной настройки стратегии. Какой бы совершенной не была схема, все равно одинаковые боевые роботы на разных счетах одного и того же ECN/STP брокера покажут расхождения. И помимо поиска рыночных закономерностей, важной задачей для алготрейдера также является уменьшение этих расхождений. Как уже говорилось выше, чем ближе брокер к возможстям HFT, тем меньше расхождения.

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

 
TheXpert :

Hiç bir şey.

1. Panelin hemen kuyruğuna. strateji önceliklidir, saban sürmezse panel anlamsız ve yararsızdır.

2. Ticaret bölümünün uygulanması stratejiye bağlıdır, bu nedenle varsayımsal bir stratejiye saldırının bir parçası olarak tartışılacak hiçbir şey yoktur. Garip bir şekilde stratejinin uygulanması da stratejiye bağlı :)

3. Ticaret bloğunda dikkate alınan stratejiyi devre dışı bırakmak için hemen bir tetikleyici yapın. Ve yeni siparişlerin yerleşimini devre dışı bırakın.

4. Panel. Panel bir rutin.

Eh, hemen tartışılacak bir şey var ... :))

Diyelim ki tartışmayın, olası seçeneklere dikkat edin:

1. Panelin hemen kuyruğuna. strateji önceliklidir, saban sürmezse panel anlamsız ve yararsızdır.

Şimdilik katılıyorum, ancak bir uyarı ile: program hemen iki modda çalışmaya yönlendirilmeli, bu nedenle stratejik / ticari bölümler, panelden kontrolün varlığı / yokluğu dikkate alınarak ve / olmadan hemen belirtilmelidir. panelde bilgi gösteriliyor.

2. Ticaret bölümünün uygulanması stratejiye bağlıdır, .......

Ve burada gerekli değil. Benim için neredeyse alakasız. Ticaret bölümünün tamamı, sipariş verme, pozisyonları izleme, yeniden fiyatlama ve ticaretle ilgili diğer saçmalıkları tam olarak uygulayan bir sınıf (CMarketDriver) olarak yazılmıştır. Tüm enstrümanlar aynı anda. Ve stratejik kısım, ona yalnızca girdi olarak enstrümanlar için önerilen pazar konumlarını verir: yani. {string Instrument; biçimindeki yapıların bir dizisini doldurur ; double Position} ve sunucuyla senkronizasyon ister: MD.Synhronize(PositionArray). Ve ps. Şimdiye kadar, yalnızca piyasa emirleriyle işlem görüyor, ancak spread içinde verilen limit emirlerini işlem gören bir versiyon (ticaret maliyetlerini azaltmak için) yolda. Alım satım için kar alma/kayıp durdurma kullanmıyorum, ancak MarketDriver sunucuyla uzun süre bağlantı kesilmesi durumunda koruyucu duraklar ayarlayabilir (durdurma parametreleri sürücü ayarlarında bir kez belirtilir). Bu arada çok başarılı, neredeyse sorunsuz bir yapısal çözüm. Test cihazında stratejik fikirleri test etmek için, genel olarak bir şarkı - ticarette sorun yok, tüm dikkat stratejiye ayrılabilir - tüm ticaret uzun süredir hata ayıklanmış ve ticaret sürücüsünde kapsüllenmiştir.

2............, yani varsayımsal bir stratejiye yapılan saldırının bir parçası olarak tartışılacak bir şey yok. Garip bir şekilde stratejinin uygulanması da stratejiye bağlı :)

Eh, burada buldozerden belirtebilirsiniz, tartışılacak tamamen çöp vardı. Örneğin, yeni bir fikir ortaya çıktı - bir çift macaronun kesişiminde ticaret yapabilirsiniz. Dahi, değil mi? Bu durumda görev, programı, geliştirme sırasında (örneğin, üçüncü bir tire ekleyerek) kodun çoğunu değiştirmeniz gerekmeyecek şekilde yapılandırmaktır. İdeal olarak - biraz ve kesinlikle yerel bir bölgede (ve bir düzine modülde değil). O zaman, çoklu para birimine doğru gelişme mümkündür (projenin basitliği için, enstrüman ticaretinin kesinlikle bağımsız olduğunu, ara bağlantıların aptalca hesaba katılmadığını varsayıyoruz). Böyle bir gelişmeyi önceden tahmin etmek, stratejik kısmı nasıl organize eder?

3. Ticaret bloğunda dikkate alınan stratejiyi devre dışı bırakmak için hemen bir tetikleyici yapın. Ve yeni siparişlerin yerleşimini devre dışı bırakın.

Burada biraz çiğneyebilirsiniz. Ama zorunlu değil. Sonunda, öngörülen belirli bir zorluk yoktur.

4. Panel. Panel bir rutin.

Gerçekten katılmıyorum. Panelin kendisi elbette bir rutindir. Ancak, stratejinin panel ile etkinlik bağlantısının organizasyonu, özellikle böyle bir panel için az çok evrensel bir şablon geliştirmeye çalışırsanız, farklı Uzman Danışmanlara kolay adaptasyon ve proje sırasında kolay geliştirme anlamına gelen oldukça yaratıcı bir iştir. büyür / gelişir.

 
MetaDriver :

Ve burada gerekli değil. Benim için neredeyse alakasız.

Neredeyse her zaman bana bağlı. Özellikle ECN ile çalışıyorsanız. Eh, yani her şey, elbette, en düşük seviyede değil, sadece standart ticaret işlevlerinin kabukları aracılığıyla yapılır.

Документация по MQL5: Торговые функции
Документация по MQL5: Торговые функции
  • www.mql5.com
Торговые функции - Документация по MQL5
 
TheXpert :

Neredeyse her zaman bana bağlı . Özellikle ECN ile çalışıyorsanız. Eh, yani her şey, elbette, en düşük seviyede değil, sadece standart ticaret işlevlerinin kabukları aracılığıyla yapılır.

Bu biraz kötü. ECN ile olan ilişkimin orada nasıl gelişeceğini bilmiyorum (RoboForex'te bir hesap açacağım), ancak bu yapısal ayrışmayı (strateji/piyasa sürücüsü) sürdürmek için elimden geleni yapacağım. O kadar uygundur ki, bazı makul ticaret maliyetlerine (kar kaybı gibi) bile hazırdır.

Ana EA döngüsünün sonunda ne kadar basit göründüğünü görün:

 // Тестовый советник для тестирования обученных в GPU-оптимизаторе нейросеток (или записи значений котировок/индикаторов для отправки исходных данных в тот же оптимизатор).
void OnTick ()
  {
   if (Mode==TradesMode) //-- Если режим тестирования
     {
       for ( int i= 0 ;i<CountInd;i++)
        {
         vInds[i]=GetInd(i, 0 );   // получаем значения индикаторов
        }
      Net.CalcResult(vInds);             // рассчитываем значение нейросетки
       float net_result=Net.NetResult[ 0 ];  // забираем рекомендованную рыночную позицию      
      SP.Pos=net_result*Lot;             // заполняем структуру для MarketDriver'a
       int err;
      MD.Synhronize(SP,err);             // синхронизируемся с торговым сервером.
     }
   else // Mode==RecordMode  // Если режим записи
..............
Basitleştirilmiş test versiyonuna bakın, şema hoşunuza gidebilir. Herhangi bir şey varsa, ihtiyaçlarınıza göre değiştirin ve sağlığınız için kullanın.
Dosyalar:
Neden: