[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 546

 
drknn >> :

Döngünün mantığını araştırmadım. Ama senin için kırmızı bir çizgiyle altını çizdiğim şeye üstünkörü bir bakış takıldı gözüme. DC verileri değişmediyse, tekrarlayın. Ya değiştilerse? Değiştirilirse danışmanın ne yapması gerektiği. Takım nerede?

Programcı yatağa gittiğinde yatağın yanına iki bardak koyar. Bir - su ile - programcının içmek istemesi durumunda. Programcının pi istememesi durumunda diğeri boştur.

Bu bir şaka, ancak programlamada genellikle iki bölmeli ağaç dalının her iki dalını da işlemeniz gerekir.

not

Bu arada, artmedia70 , kodunuzun köşeli parantezlerinin ve girintilerinin ekran görüntüsümde nasıl bulunduğuna dikkat edin. Kodun bu organizasyonu ile daha okunabilir. Bu sadece bilginiz içindir.

__________________________________________________________________________________________________________________________________________________

Kahretsin, bir şey yazmam gereken yerlere mesajlarımı yazmıyor ve kod eklemiyor.
drknn , kodumu yapılandırmayla ilgili bilgi için teşekkürler. Kodumu senin yazdığın gibi yazıyorum. Sadece SRC kodunu girmeme izin vermiyor ve hepsi bu. Burada bile kendi mesajınızı yazmak zorundayım çünkü bu alanın dışına çıkmama izin vermiyor, çatlama bile...
Bu doğru, önsöz.
Altını çizdiğin şeye gelince...
Ve koşul yerine getirilmezse bir şey yapması gerekmiyorsa ona başka ne komut vermeliyim? Ve karşılanmayan koşul, döngünün kapanış parantezinden önceyse, o zaman döngü modunun koşuluna bağlı olarak yeni bir yinelemenin başlangıcına ulaşacağız<=9 ...
Koşul moduna<=9 göre yinelemelerin sonunda, ana döngünün bir sonraki kapanış parantezine gidin ve ln<=Instr_Count koşuluna göre Instr_Count (brüt enstrümanların sayacı) bitene kadar bir sonraki para birimi enstrümanına gidin. değil mi? Yoksa kapanış ayracından önce ara kullanmayı mı öneriyorsunuz?
Gerçi... Bir yerlerde hatalarım var... Danışmanı çizelgeye "astığımda", ardı ardına açılış pozisyonları, minimum mesafedeki değişiklikler vb. hakkında mesajlar alıyorum. Ve tik ağacının gelişiyle bile değil, üst üste makineli tüfek gibi ... :)
Kendim çözmek için yeterli bilgiye sahip olmamam üzücü, ancak burada SRC kullanarak kod yerleştirmek (en azından benim için) imkansızsa zor.
Her durumda, katıldığınız için teşekkürler. Beni düşündürüyor... ;)

 

TheXpert писал(а) >>

Saçmalık.


Pekala, kendiniz düşünün - birkaç sayfaya yayılmışsa bilgiyi işlemek psikolojik olarak zordur - tüm resmi analiz etmek için sürekli olarak kodlar arasında geçiş yapmanız gerekir. Ama bunu yapacak insan tavşan ya da kurbağa değildir. Elbette bu, kodun üç satırdan oluştuğu durumlar için geçerli değildir, ancak çekim daha karmaşıktır.

 
drknn писал(а) >>

Kayma belki?

"Otomatik" ile ne demek istiyorsun? "Otomatik" terimi ile ne kastedilmektedir?


Teşekkür ederim, muhtemelen haklısın ... SL ise, zararın artacağı açıktır, ama TP neden karı azaltıyor? teoride de daha fazla olmalı?

"otomatik" bağımsız çalışan bir uzmandır.

 
Yardım! Martin ile ilkel bir EA oluşturmaya çalışıyorum ... sipariş açma hatası 131 mi veriyor? nerede yanlış?
Dosyalar:
 
GVA63 >> :


Teşekkür ederim, muhtemelen haklısın ... SL ise, zararın artacağı açıktır, ama TP neden karı azaltıyor? teoride de daha fazla olmalı?

"otomatik" bağımsız çalışan bir uzmandır.

Görünüşe göre yayılma zıplıyor.
 

artmedia70, yeniden başlangıç noktasına döndük. İlk ve en önemli şey algoritmadır. Programın bu şekilde çalışması gerekir. Net bir fikir yoksa, o zaman program da yoktur çünkü nasıl çalışması gerektiğini bilmediğim bir kod yazamazsınız.

Kodunuzun düzgün çalışmayan bir kısmına satır satır bakalım. Hadi hepsini parçalayalım. Yani, bu yerde neden bu belirli yöntemi, aracı, yaklaşımı kullandığınızı gerekçelendirmede son derece kesin olacaksınız. ANCAK? (Bu halkın işine gelmez - bu kendini anlama girişimidir - programlama önce meditasyondur, sonra cıvatalar, somunlar, dübeller, saç tokaları ve diğer küçük şeylerle bağlantılı bir sürü ayrıntı). Yapmak?

 

Tünaydın!!!

OrderMagicNumber() kullanmayı planlıyorum, her bir özel mum için onu hesaplamak üzere yerleşik bir işlev yapıyorum, bu nedenle her mum ve TF için benzersiz olması arzu edilir.
özellikle 2 değişkeni birbirine yapıştırmanın bir yolunu bulamadı
int Nokta () ve
tarihsaat Saat[i]
akla

xxxyyyyyyyyyy,
burada xxx, Period()'dan dakikalar ve yyyyyyyyyy, Time[i]'den saniyelerdir

nasıl daha iyi uygulanır?

benden böyle bir acemi :)

 
Gravitus >> :

Tünaydın!!!

OrderMagicNumber() kullanmayı planlıyorum, her bir özel mum için onu hesaplamak üzere yerleşik bir işlev yapıyorum, bu nedenle her mum ve TF için benzersiz olması arzu edilir.
özellikle 2 değişkeni birbirine yapıştırmanın bir yolunu bulamadı
int Dönem( ) ve
tarihsaat Saat[i]
akla

xxxyyyyyyyyyy,
burada xxx, Period()'dan dakikalar ve yyyyyyyyyy, Time[i]'den saniyelerdir

nasıl daha iyi uygulanır?

benden böyle bir acemi :)


Nokta bir tamsayı değişkenidir, ancak bir haneye paketlenebilse de, neden sihirde bir veri zamanı var? siparişin açılış saatini ve böylece öğrenebilirsiniz.
 
splxgf >> :

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

amaç, belirli bir zaman dilimindeki belirli bir mum için benzersiz bir büyü atamak ve aynı açılış zamanlarına sahip 2 mum m15 ve h1 için farklı olmalıdır...

bu yüzden şimdilik ana fikrim hesaplamasını değerlere bağlamak

zaman ve

dönem ( )

magick'in görsel pratikliği önemsiz, 5-10 karakterlik bir int format değeri olarak alma eğilimindeyim...

Düzenle

----------

Aslında bir yolunu buldum... :)

 
drknn >> :

artmedia70, tekrar başlangıç noktasına döndük. İlk ve en önemli şey algoritmadır. Programın bu şekilde çalışması gerekir. Net bir fikir yoksa, o zaman program yoktur çünkü nasıl çalışması gerektiğini bilmediğim bir kod yazamazsınız.

Kodunuzun düzgün çalışmayan bir kısmına satır satır bakalım. Hadi hepsini parçalayalım. Yani, bu yerde neden bu belirli yöntemi, aracı, yaklaşımı kullandığınızı gerekçelendirmede son derece kesin olacaksınız. ANCAK? (Bu halkın işine gelmez - bu kendini anlama girişimidir - programlama önce meditasyondur, sonra cıvatalar, somunlar, dübeller, saç tokaları ve diğer küçük şeylerle bağlantılı bir sürü ayrıntı). Yapmak?

Algoritma orada. Ve bir işçi. Sadece öğreniyorum, bu yüzden öğreticiden kodu alıyorum ve ihtiyaçlarıma uyacak şekilde yeniden yapıyorum.

Mevcut durumda, terminalde neler olduğunu basitçe belirlemesi ve tüm olayları ekranda Inform gösterge penceresinde görüntülemesi gereken bir Uzman Danışmanın taslağının hazırlanması

 //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
//=================== ПОДКЛЮЧЕНИЕ ВНЕШНИХ МОДУЛЕЙ ================
//--------------------------------------------------------------- 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 ;
   }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж

Terminal - tüm açık pozisyonları ve verilen emirleri dikkate alır:

 //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
/*
Соответствие элементов массивов 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 ; //();
   }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж