AutoGraf Series 4 - MQL özellikleri. - sayfa 33

 

Sayın!

Lütfen soruya cevap ver.

Dış değişkenler kodda nasıl ve nerede belirtilmelidir?

Verilen örnekten bu açık değildir.

//================================================================================== 4 ==
   double AT[33];                                  // Массив для внешних переменных
   bool New_Parametr = false;                      // Обновления параметров пока не было
   for (int i=0; i<=32; i++)                       // Поищем обновлённый параметр
      {                                            // Если какой-то параметр обновлён..
      if(NormalizeDouble(AT[i], 8) !=  NormalizeDouble(Instrument[0][0][i][0],8))
         {
         New_Parametr = true;                      // .. запоминаем этот факт..         
         for (i=0; i<=32; i++)                     // .. то присвоим новые значения всем
            AT[i] = Instrument[0][0][i][0];        // Для удобства пользования
         break;                                    // .. и выходим из цикла перебора
         }
      }
//================================================================================== 5 ==
   int Strategy = NormalizeDouble(AT[0],0);
   switch(Strategy)
      {

Uygulama ayarlarındaki harici değişkenlerin kişiliksizleştirilmediğinden nasıl emin olunur? AT_1 ... AT_32, aksi takdirde her bir sayının ne anlama geldiğini hatırlamayacaksınız?

 

Stratejiler için harici değişkenlerin değerleri (ayrıca harici değişkenlerin herhangi bir değeri) Expert Advisor ayarlarında belirtilir.

Expert Advisor'da harici değişkenlerin adlarını değiştiremezsiniz, çünkü AG_exp.ex4 uzman koduna gömülüdürler.

EA'dan gelen harici değişkenler, Instrument dizisi aracılığıyla ekli strateji dosyasına aktarılır.

Expert Advisor'daki harici değişkenlere karşılık gelen stratejideki yerel değişkenlerin adları stratejide değiştirilebilir.

Bu örnekte, bu yapılır:

AT[i] = Instrument[0][0][i][0];        // Для удобства пользования

İsimlerinizi dilediğiniz gibi belirleyebilirsiniz.

Örneğin, AT[i] yerine Alfa, Beta vb. belirtin.

Dizi Aracı [][][][]: http://autograf.dp.ua/Pages/2/26/267/2676.htm
AG_AT() işlevindeki stratejiler: http://autograf.dp.ua/Pages/2/26/267/26711/26711_1.htm
Ekli stratejiler: http://autograf.dp.ua/Pages/2/26/267/26711/26711_2.htm
Strateji kodlama örnekleri:
http://autograf.dp.ua/Pages/2/26/267/26712/26712_1.htm
ve http://autograf.dp.ua/Pages/2/26/267/26712/26712_2.htm

 

Şimdi anladım. Ve bu, bir kerede programlama deneyimi olmadan henüz ulaşmıyor. Teşekkür ederim.

Если программно, то можно воспользоваться функцией ObjectDelete () или ObjectsDeleteAll().

Ve bunu stratejimde nereye koymalıyım? Yoksa kullanıcı tanımlı işlev her çağrıldığında nesneler oluşturulup silinecek mi?

 
LeonidSB писал(а) >>

Şimdi anladım. Ve bu, bir kerede programlama deneyimi olmadan henüz ulaşmıyor. Teşekkür ederim.

Ve bunu stratejimde nereye koymalıyım? Yoksa kullanıcı tanımlı işlev her çağrıldığında nesneler oluşturulup silinecek mi?

Özel bir işlev veya stratejide yazılmasına gerek yoktur.

Basit bir ayrı komut dosyası yapın. Stratejiyi kapattıktan sonra pencereye atın, gereksiz her şeyi silecektir.

(AG 5'teki stratejide deinit gibi bir şey yapmanız gerekecek; ancak çözüm MQL 5'in yeteneklerine bağlı olacaktır.

 

İyi tavsiye için teşekkürler. Sadece sen beni abartıyorsun. Henüz senaryoları çözemedim, ancak bu yönde gideceğim. Mümkünse, lütfen benzer bir şeye bir bağlantı sağlayın.

Şimdiye kadar, sadece göstergeyi tanıdım.

Vladislav Goshkov'u (VG) TD_Points&Line_mgtd1.1.mq4'ün bir analogu olarak aldım, log.mq4 ekledim Copyright © 2006, raporlar oluşturmak için komposter ve göstergemden 2.000'den fazla satır aldım.

Onun şemasını yaptım. Yaklaşık 500 satır çıktı. Muhtemelen hala kesebilirsin, ama şimdiye kadar.

rozet

 // --- // ---

kesikler işaretlenmiştir.

Şimdiye kadar kafamda tutulan yapı, istenilen işlevselliğe ulaşmak istiyorum. Sonra her şeyi kurallara göre tarayın (maliyetlerin geometrik bir ilerlemesinde kalitenin fiyatı).

Peki, 521 satırını SRC'ye eklemeyin: "metin izin verilen boyuttan daha büyük." dosyayı eklemelisin

Dosyalar:
 

Bu aşamada, özel işlevlere ve uygulama türlerine aşina olmanız gerekir.

Bunu yapmak için , MQL4 ders kitabını alıp baştan itibaren sırayla okumak en iyisidir. Sorular olacak - düzen, cevaplamaya çalışacağım.

 
SK. >> :

Bu aşamada, özel işlevlere ve uygulama türlerine aşina olmanız gerekir.

Bunu yapmak için , MQL4 ders kitabını alıp baştan itibaren sırayla okumak en iyisidir. Sorular olacak - düzen, cevaplamaya çalışacağım.

Ders kitabınız benim referans kitabım. Her şey onunla başladı. İndirdim, çıktısını aldım ve sürekli kullanıyorum.

Okuduklarımın özünü anlamazsam veya bazı sorular ifşa edilmezse sorular ortaya çıkıyor.

Orada harici bir dosyaya veri yazma veya bir haber dosyasından okuma ile ilgili iki örnek vardır, bu nedenle bu, Başlat () işlevine yapılan bir çağrı içindir. Andrey Khatimlianskii ( komposter ) ihtiyacım olanı yaptığım bir örnek bulana kadar bir aydan fazla kurcalayarak geçirdim. Yani: init() – rapor tablosu başlığının oluşturulması (yaklaşık 30 sütun), start() – oturum için her işlemin parametreleriyle bir satırın oluşturulması, deinit () – oturum sonuçlarının oluşturulması. Ayrıca, üç tür rapor hazırladım (her işlem için parametreler içeren bir tablo, oturum sonuçlarını içeren bir sütun, oturum sonuçlarını içeren bir tablo) ve bunları farklı konfigürasyonlarda istediğiniz kadar şekillendirebilir, böylece daha sonra işleyebilirsiniz. Excel'de. Bu arada, deinit() ObjectsDeleteAll() içinde. Ama bu daha sonraydı ve en başından beri bir sürü grafik biriktirdi. böylece test cihazında ve gerçek hayatta her şey çizelgelerde kalır ve her şey görülebilir ve analiz edilebilir. Bu, programlama yaparken çok yardımcı olur, çünkü MQL -4'te hata ayıklayıcı yoktur ve çizelgede programın hangi çizgileri (açılış ve kapanış koşulları, hedefler, ticaret çizgileri) çizdiğini ve nasıl yaptığını görebilirsiniz. Ancak bunların hepsi gösterge çerçevesinde, ancak gerçekten ticaret yapmıyor. Bu nedenle, sanal olmayan ticaret olasılığını ve ayrıca otomatik optimizasyon olasılığı ile test raporu verilerini kullanma olasılığını elde etmek için bir Uzman Danışmana bağlanma ihtiyacı vardır. Ve tüm bunlar, şimdiye kadar göstergede uygulanan mevcut işlevselliği kaybetmeden.

Ne yazık ki, 495 sayfa ders kitabı, 180 sayfa referans kitabı, 370 sayfa AutoGraf -4 açıklaması, MetaEditor , MT referansları çerçevesinde her şeyi ifade edemezsiniz ve bir forum okumak yeterli değildir. . Ama bu böyle, tüm şarkı sözleri.

Ama özellikle Strateji fonksiyonunun (gösterge algoritmasına dayalı olarak) bir kod diyagramını yaptım ve ObjectsDeleteAll() için betiği nereye ve nasıl ekleyeceğimi bilmiyorum ? Alım satım işlevlerini doğru bir şekilde ekledim mi (“zhzhzhzhzhzh” olarak vurgulanıyorlar mı? Lütfen şu ekonomiye bakın:

 

Strateji fonksiyon kod şeması (gösterge algoritmasına göre)



//+------------------------------------------------------------------+
//|                                          Shema_3_TD_BLS_21_1.mq4 |  
//|                                 Copyright © 2009, Leonid Belskiy |  
//|                                         leonid.belskiy@gmail.com |   
//+------------------------------------------------------------------+  
#property copyright "Copyright © 2009, Leonid Belskiy"
#property link      "leonid.belskiy@gmail.com"
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
#property library                                                                                                        //ж
                                                                                                                         //ж
#import "AG_Lib.ex4"                                                                                                     //ж
    int AG_Magic_Number();                                 // Вычисление MN                                              //ж
    int AG_Message(string & Message[], string _Text);      // Запись сообщений в массив Message[]                        //ж
                                  // Запись управляющих воздействий ф-ии АТ в массив Manager[][]:                        //ж
    int AG_Set_Instr(double & Manager[][], int ii, double v1, double v2, double v3,                                      //ж
                     double v4, double v5, double v6, int io , int ih);                                                  //ж
    int AG_Delete_Instr(double&Manager[][], int ii, int io,int ih);  //Удаление инструментов                             //ж
#import                                                                                                                  //ж
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -                                //ж
    int TD_BLS_21_2(int Parol_S, double Order[][], string Object[],                                                      //ж
                    double Instrument[][][][], int Ddraw_Object[][],                                                     //ж
                    double& Tuning[], double& Manager[][], string& Message[])                                            //ж
        {                                                                                                                //ж
         static int Count = 0;                             // Счётчик посещений этого блока                              //ж
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -                                //ж
         double Lot= NormalizeDouble(Tuning[1],2);         // Значение лотов                                             //ж
         int Per   = NormalizeDouble(Tuning[2],0);         // Значение % (целое)                                         //ж
         int Slip  = NormalizeDouble(Tuning[3],0);         // Проскальзывание (пунктов)                                  //ж
         int SL    = NormalizeDouble(Tuning[4],0);         // StopLoss (пунктов)                                         //ж
         int TP    = NormalizeDouble(Tuning[5],0);         // TakeProfit (пунктов)                                       //ж 
         int Ds    = NormalizeDouble(Tuning[6],0);         // Дистанция (пунктов)                                        //ж
         int St    = NormalizeDouble(Tuning[7],0);         // Шаг модификации (пунктов)                                  //ж
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -                                //ж
         if (Count==0)                                     // Это можно делать один раз в начале                         //ж
             {                                             // Пример сообщения (максимум 62 симв):                       //ж
              AG_Message(Message, "Разработчик J.Smith, http://company.com");                                            //ж
              Count++;                                     // Количество посещений этого блока                           //ж 
                                                                                                                         //ж
              Lot   = 0.1;                                 // Если количество лотов Lot (Tuning[1]) больше нуля, ..      //ж
              Per   = 0;                                   // .. независимо от значения переменной Per (Tuning[2]).      //ж
//              Lot   = 0.0;                                 // 0.0 означает, что колич лотов высчитывается в AutoGraf   //ж
//              Per   = 7;                                   // .. на основе значения % (здесь 7%) суммы баланса         //ж
              Slip  = 1;                                                                                                 //ж   
              SL    = 25;                                                                                                //ж       
              TP    = 100;                                                                                               //ж         
//              Ds    = 20;                                                                                              //ж          
//              St    = 3;                                                                                               //ж          
              Tuning[1] = Lot;                             // Значение лотов                                             //ж          
              Tuning[2] = Per;                             // Значение % (целое)                                         //ж          
              Tuning[3] = Slip;                            // Проскальзывание (пунктов)                                  //ж          
              Tuning[4] = SL;                              // StopLoss (пунктов)                                         //ж          
              Tuning[5] = TP;                              // TakeProfit (пунктов)                                       //ж          
              Tuning[6] = Ds;                              // Дистанция (пунктов)                                        //ж          
              Tuning[7] = St;                              // Шаг модификации (пунктов)                                  //ж          
              AG_Message(Message,"Изменение настроек из АТ.");       // Пример сообщения (макс.62 симв.)                 //ж          
              return(1);                                   // Выход после перенастроек параметров                        //ж          
             }                                                                                                           //ж          
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -                                //ж          
         int MN;                                           // MagicNumber в ф-ии AG_Magic_Number()                       //ж          
         string Comm = "AG_AT";                            // Комментарий (рекомендуется "AG_AT")                        //ж          
         static int Ticket;                                // Номер ордера                                               //ж          
         int _Ord_Ticket = 0;                              // Номер ордера                                               //ж          
         double _Ord_Lots = 0;                             // Полное закрытие                                            //ж          
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -                                //ж          
   double AT[33];                                  // Массив для внешних переменных                                      //ж          
   bool New_Parametr = false;                      // Обновления параметров пока не было                                 //ж          
   for (int i=0; i<=32; i++)                       // Поищем обновлённый параметр                                        //ж          
      {                                            // Если какой-то параметр обновлён..                                  //ж          
       AT[1]=11;                                                                                                         //ж          
                                                                                                                         //ж          
      if(NormalizeDouble(AT[i], 8) !=  NormalizeDouble(Instrument[0][0][i][0],8))                                        //ж          
         {                                                                                                               //ж          
         New_Parametr = true;                      // .. запоминаем этот факт..                                          //ж                  
         for (i=0; i<=32; i++)                     // .. то присвоим новые значения всем                                 //ж          
            AT[i] = Instrument[0][0][i][0];        // Для удобства пользования                                           //ж          
         break;                                    // .. и выходим из цикла перебора                                     //ж          
         }                                                                                                               //ж          
      }                                                                                                                  //ж          
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
    if((nTime!=Time[0])||(CurPeriod!=Period()))                      // На новом баре или изменении таймфрейма все пересчитываем 
        {                                                            // Period Возвращает значение числа минут периода для текущего графика. 
//=================================================
//******** Поиск опорных точек предложения ********
//=================================================
         for(i=2+StepBack,D=2,NP=0; (NP<D)&&(i<Bars); i++)           // Перебираем бары влево начиная со 2-го бара от текущего
             {                                                       // Begin
//            --- // ---
             }                                                       // End;
//=================================================
//********** Поиск опорных точек спроса ***********
//=================================================
         for(i=2+StepBack,D=2,NP=0; (NP<D)&&(i<Bars); i++)           // Перебираем бары влево начиная со 2-го бара от текущего 
             {                                                       // Begin
//            --- // ---
             }                                                       // End;
//=================================================
//****       Рисуем  TD-линии                  ****
//=================================================
//            --- // ---
         CurPeriod=Period();                                         // Соответствие минут графика с минутами системы
         nTime=Time[0];                                              // Соответствие время текущего и бара программы 
        }
//=================================================
//****     Формирование сигналов для сделок    ****
//=================================================
    Fun_New_Bar();                                                   // Определение нового бара
//=================================================
//****     Формирование сигналов на покупку    ****
//=================================================
    if((Close[i]>UpP[0]+UpV*(UpB[0]-i)+Puncture*Point) && (High[i+1]<=UpP[0]+UpV*(UpB[0]-(i+1)))) // Сигнал на покупку
        {
//            --- // ---                                                Нахождение баров для расчета проекторов
//            --- // ---                                                Расчет цен проекторов
//            --- // ---                                                Расчет размеров проекторов
         if(NoQw ... )                                               // Определение квалификаторов прорыва
             {
//            --- // ---                                                Формирование массива цен уровней целей
//            --- // ---                                                Создаем и рисуем сигнал на покупку кружок (красный)
              if(Flag_Up==true)
                  {
//            --- // ---                                                Создаем и рисуем линию на покупку (красный)
//            --- // ---                                                Создаем и рисуем линии целей
//================================================
//****         Открываем сделку  Buy          ****
//================================================
                   if(MiB_Up[1]==0 && Flag_Up_CD_Start==false && Flag_Up_Start==false && Flag_Dn_Start==false)
                       {
                        MiB_Up[1]=i;                                 // Массив номеров баров точек Up сделки MiB_Up[1]-левая, MiB_Up[0]-правая
                        MiP_Up[1]=Close[i];                          // Массив цен точек Up сделки MiP_Up[1]-левая, MiP_Up[0]-правая
                        MiBT_Up[1]=TimeCurrent();                    // Количество секунд в момент открытия сделки
                        Flag_Up_CD_Start=true;                       // Флаг рисования линий сделок на покупку - покупки запрещены    
                        Flag_Up_CD_End=false;                        // до закрытия сделки и образования нового бара
                        Flag_Dn_Start=true;                          // Запрещено открывать противоположную Dn сделку
//                      жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
                        AG_Message(Message, "АТ: сработал критерий открытия Buy.");                          // Сообщение(макс.62симв)                ж 
                        MN = AG_Magic_Number();                                                              // Вычисление MagicNumber (рекомендуется)ж 
                        OrderSend( Symbol(), OP_BUY, Lot, Ask, 2, Bid-SL*Point, Bid+TP*Point, Comm, MN);     // Открытие ордера Buy:                  ж
//                      жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
                       }                                   
                   bay++;                                            // Счетчик нарисованных линий целей на покупку
                   Flag_Up=false;                                    // Линии нарисовали - флаг опустили до образования нового бара
                  }
             }
        }
//=================================================
//****           Закрываем сделку  Buy         ****
//=================================================
    if(Flag_Up_CD_Start==true && Flag_Up_CD_End==false)              // Флаг конца рисования линий сделок на покупку - закрытие сделки       
        {                                                            // Пока сделка открыта, пересчитываем точку [0] и перерисовываем линию
//            --- // ---                                             // Расчет времени слелки (статистика отчета)
//            --- // ---                                             // Расчет результата слелки (статистика отчета)
//            --- // ---                                             // Рисуем линию сделки Up
//-------жжжжжжжжжжжжжжжжжжжжжжжжж Выбор условий закрытия слелки Up
         if(CD_TrSL && Close[i]<iP_Up-TrStopLoss*Point)              // (TrStopLoss==TrSL) Если цена пересекла TrStopLoss        
             {
//            жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
              if (NormalizeDouble(Order[1][6],0) == 0.0)             // Если тип ордера Buy                                                           ж
                  {                                                                                                                                   ж
               _Ord_Ticket = NormalizeDouble(Order[1][4],0);         // Номер ордера                                                                  ж
               _Ord_Lots = NormalizeDouble(Order[1][5],2);           // Полное закрытие                                                               ж
               OrderClose(_Ord_Ticket, _Ord_Lots, Bid, 2);           // Закрыть ордер Buy                                                             ж
                  }                                                                                                                                   ж
//            жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//            --- // ---                                             // Расчет времени по всем Up сделкам (статистика отчета)
//            --- // ---                                             // Расчет времени по всем сделкам (статистика отчета)
//            --- // ---                                             // Расчет баланса и результатов Up сделок (статистика отчета)
//            --- // ---                                             // Формируем строку отчета (статистика отчета)
             }
         WindowRedraw();         
        }
//=================================================
//****     Формирование сигналов на продажу    ****
//=================================================
    if((Close[i]<DownP[0]+DownV*(DownB[0]-i)-Puncture*Point) && (Low[i+1]>=DownP[0]+DownV*(DownB[0]-(i+1)))) // Сигнал на продажу
        {
//            --- // ---                                                Нахождение баров для расчета проекторов
//            --- // ---                                                Расчет цен проекторов
//            --- // ---                                                Расчет размеров проекторов
         if(NoQw ... )                                               // Определение квалификаторов прорыва
             {
//            --- // ---                                                Формирование массива цен уровней целей
//            --- // ---                                                Создаем и рисуем сигнал на продажу кружок (синий)
              if(Flag_Dn==true)
                  {
//            --- // ---                                                Создаем и рисуем линию на продажу (синий)
//            --- // ---                                                Создаем и рисуем линии целей
//=================================================
//****       Открываем сделку Sell             ****
//=================================================
                   if(MiB_Dn[1]==0 && Flag_Dn_CD_Start==false && Flag_Dn_Start==false && Flag_Up_Start==false)
                       {
                        MiB_Dn[1]=i;                                 // Массив номеров баров точек Dn сделки iB_Up[1]-левая, iB_Dn[0]-правая
                        MiP_Dn[1]=Close[i];                          // Массив цен точек Dn сделки iP_Dn[1]-левая, iP_Dn[0]-правая
                        MiBT_Dn[1]=TimeCurrent();                    // Массив времени баров содержащих точки Dn сделки iBT_Dn[1]-левая, iBT_Dn[0]-правая
                        Flag_Dn_CD_Start=true;                       // Флаг начала рисования линий сделок на продажу                       
                        Flag_Dn_CD_End=false;                        // Флаг конца рисования линий сделок на продажу                       
                        Flag_Up_Start=true;                          // Запрещено открывать противоположную Up сделку
//                      жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
                        AG_Message(Message, "АТ: сработал критерий открытия Sell.");                         //Сообщение(макс62симв)                  ж
                        MN = AG_Magic_Number();                                                              // Вычисление MagicNumber (рекомендуется)ж
                        OrderSend( Symbol(), OP_SELL, Lot, Bid, 2, Ask+SL*Point, Ask-TP*Point, Comm, MN);    // Открытие ордера Sell:                 ж
//                      жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
                       }
                   sell++;                                           // Счетчик нарисованных линий целей на продажу
                   Flag_Dn=false;                                    // Линии нарисовали - флаг опустили до образования нового бара
                  }
             }
        }
//=================================================
//****           Закрываем сделку Sell         ****
//=================================================
    i=0;
    if(Flag_Dn_CD_Start==true && Flag_Dn_CD_End==false)              // Флаг конца рисования линий сделок на продажу - закрытие сделки      
        {                                                            // Пока сделка открыта, пересчитываем точку [0] и перерисовываем линию
//            --- // ---                                             // Расчет времени слелки (статистика отчета)
//            --- // ---                                             // Расчет результата слелки (статистика отчета)
//            --- // ---                                             // Рисуем линию сделки Dn
//            --- // ---
//-------жжжжжжжжжжжжжжжжжжжжжжжжж Выбор условий закрытия слелки Dn
         if(CD_TrSL && Close[i]>iP_Dn+TrStopLoss*Point)              // (TrStopLoss==TrSL) Если цена пересекла TrStopLoss        
             {
//            жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
              if (NormalizeDouble(Order[1][6],0) == 1.0)             // Если тип ордера Sell                                                          ж
                  {                                                                                                                                   ж
                   _Ord_Ticket = NormalizeDouble(Order[1][4],0);     // Номер ордера                                                                  ж
                   _Ord_Lots = NormalizeDouble(Order[1][5],2);       // Будем закр.ордер полностью                                                    ж
                   OrderClose(_Ord_Ticket, _Ord_Lots, Ask, 2);       // Закрыть ордер Sell                                                            ж
                  }                                                                                                                                   ж
//            жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//            --- // ---                                             // Расчет времени по всем Dn сделкам (статистика отчета)
//            --- // ---                                             // Расчет времени по всем сделкам (статистика отчета)
//            --- // ---                                             // Расчет баланса и результатов Dn сделок (статистика отчета)
//            --- // ---                                             // Формируем строку отчета (статистика отчета)
             }
         WindowRedraw();         
        }
   }
//  жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
    return(1);           // Нормальный выход                                                                                      ж
   }                                                                                                                              ж
//  жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
void Fun_New_Bar()                                                   // Функция определения образования нового бара
//            --- // ---


 
LeonidSB писал(а) >>

Ama özellikle Strateji fonksiyonunun (gösterge algoritmasına dayalı olarak) bir kod diyagramını yaptım ve ObjectsDeleteAll() için betiği nereye ve nasıl ekleyeceğimi bilmiyorum ? Alım satım işlevlerini doğru bir şekilde ekledim mi (“zhzhzhzhzhzh” olarak vurgulanıyorlar mı? Lütfen şu ekonomiye bakın:

Bence işinde kendini aşıyorsun.

Programlama, el yordamıyla ilgili değildir.

Yerel kodda, programcının tam olarak anlamadığı veya hiç anlamadığı herhangi bir şeyi kullanmak kabul edilemez.

Yani ondan bir şey çıkmayacak.

Programlama, doğası gereği, belki de diğer tüm faaliyetlerden daha fazla, tam bir netlik ve eksiksiz bir öz bildirim gerektirir.

Temel kodlar yazarak başlayın. Yalnızca kodunuzdaki her harfi tam olarak açıklayabildiğinizde daha karmaşık olanlara geçin.

--

Basit ve sıradan bir Uzman Danışman örnekleri ders kitabında bulunmaktadır.

Daha önce, programlamaya girişte, uygulanan programların bir sınıflandırması verilmiştir (uzmanların işaretleri ve farklılıkları, komut dosyaları ve göstergeler).

Komut dosyası bir Uzman Danışmana "takılamaz". Bu bağımsız bir programdır.

Kodunuz hakkında hazırlıksız olarak, biçimlendirme açısından dikkatsizce derlendiğini söyleyebiliriz.
Ayrıca blokların çoğu fonksiyon olarak düzenlenebilir. Bu şekilde daha net olurdu (aksi takdirde birkaç ay içinde kendi kodunuzu okuyamayacaksınız)

 

Kesinlikle haklısın. Sana her konuda katılıyorum. Yapıcı eleştiri sağlamak için zaman ayırdığınız için teşekkür ederiz!


"Ekle" ile, komut dosyasının çalışmasını AG _ AT () işleviyle veya ona eklenmiş ve stratejiyi uygulayan bir işlevle bağlayan bir kod yazmak kastedilmiştir.


Öğreticide, basit bir Uzman Danışman örneğinde, s tart() ve olağan olanda tüm özel işlevler vardır. Sorun yok ama dedikleri gibi "iştah yemekle gelir".

Soru, AutoGraf -4'ün tüm harika özelliklerinin nasıl kullanılacağıdır . Nasıl burada olunur?