젠장, 내가 작성해야 할 곳에 내 메시지를 쓰지 않고 코드를 삽입하지도 않습니다. drknn , 내 코드 구성에 대한 정보 감사합니다. 나는 당신이 작성하는 것과 거의 같은 방식으로 내 코드를 작성합니다. SRC 코드를 삽입하는 것을 허용하지 않습니다. 그게 전부입니다. 여기에서도 나는 당신 자신의 메시지를 작성해야합니다. 왜냐하면 그것은 나를이 분야, 심지어 균열조차 허용하지 않기 때문입니다 ... 맞습니다, 서문입니다. 강조하신 부분에 대해... 그리고 조건이 충족되지 않으면 아무 것도 할 필요가 없다면 그에게 어떤 다른 명령을 내려야 합니까? 그리고 충족되지 않는 조건이 주기의 닫는 괄호 앞에 있으면 주기 모드<=9 ...의 조건에 따라 여전히 새 반복의 시작 부분에 도달합니다. 조건 모드<=9 에 따른 반복이 끝나면 상위 주기의 다음 닫는 괄호로 이동하고 조건 ln<=Instr_Count 에 따라 Instr_Count (총 상품 카운터)가 끝날 때까지 다음 통화 상품으로 이동합니다. 그렇지 않습니까? 아니면 닫는 중괄호 앞에 break 를 사용하도록 제안하고 있습니까? 그래도... 어딘가에 에러가 나는데... 어드바이저를 차트에 '매달'하면 오픈 포지션, 최소 거리 변경 등에 대한 메시지가 잇달아 옵니다. 그리고 티크의 출현에도 불구하고 기관총에서처럼 연속적으로 ... :) 스스로 알아낼 수 있는 지식이 부족한 것이 아쉽지만, SRC 를 사용하여 코드를 배치하는 것이 불가능하다면(적어도 저에게는) 어렵습니다. 어쨌든 참여해주셔서 감사합니다. 생각이 나네요... ;)
글쎄요, 스스로 생각해 보세요. 정보가 여러 장에 흩어져 있으면 정보를 처리하는 것이 심리적으로 어렵습니다. 전체 그림을 분석하려면 코드를 계속 앞뒤로 뒤집어야 합니다. 그러나 사람은 이것을 하는 토끼도 아니고 개구리도 아닙니다. 물론 코드가 세 줄로 구성된 경우에는 해당되지 않지만, 샷이 더 복잡합니다.
artmedia70,다시 출발점으로 돌아왔습니다. 첫 번째이자 가장 중요한 것은 알고리즘입니다. 그것이 프로그램이 작동하는 방식입니다. 명확한 아이디어가 없으면 프로그램이 없는 것입니다. 어떻게 작동해야 하는지 모르는 코드를 만들 수 없기 때문입니다.
올바르게 작동하지 않는 코드를 한 줄씩 살펴보겠습니다. 그냥 다 부숴 봅시다. 즉, 여기에서 이 특정 방법, 도구, 접근 방식을 사용하는 이유를 매우 정확하게 정당화할 수 있습니다. 하지만? (이것은 대중을 위한 작업이 아닙니다. 이것은 자신을 이해하기 위한 시도입니다. 프로그래밍은 먼저 명상이고, 그 다음 볼트, 너트, 은못, 머리핀 및 기타 작은 것들과 연결된 많은 세부 사항입니다). 행위?
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(), // Курс SLDigits );
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 ; //();
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
나는 당신의 사이클의 논리를 탐구하지 않았습니다. 그러나 내가 당신을 위해 빨간 선으로 밑줄을 그은 것을 대충 훑어 보았습니다. DC 데이터가 변경되지 않은 경우 반복합니다. 만약 그들이 바뀌었다면? 변경된 경우 고문이 수행할 작업. 팀은 어디에 있습니까?
프로그래머는 잠자리에 들면 침대 근처에 두 개의 유리잔을 놓습니다. 하나 - 물과 함께 - 프로그래머가 마시고 싶어할 경우를 대비하여. 프로그래머가 파이를 원하지 않는 경우를 대비하여 다른 하나는 비어 있습니다.
농담이지만 프로그래밍에서는 종종 이분법 트리의 두 가지를 모두 처리해야 합니다.
추신
그건 그렇고, artmedia70 , 코드의 대괄호와 들여쓰기가 내 스크린샷에 있는 방식에 주의하십시오. 이 코드 구성을 사용하면 더 읽기 쉽습니다. 이것은 귀하의 정보를 위한 것입니다.
________________________________________________________________________________________________________________________________________________________________________________
젠장, 내가 작성해야 할 곳에 내 메시지를 쓰지 않고 코드를 삽입하지도 않습니다.
drknn , 내 코드 구성에 대한 정보 감사합니다. 나는 당신이 작성하는 것과 거의 같은 방식으로 내 코드를 작성합니다. SRC 코드를 삽입하는 것을 허용하지 않습니다. 그게 전부입니다. 여기에서도 나는 당신 자신의 메시지를 작성해야합니다. 왜냐하면 그것은 나를이 분야, 심지어 균열조차 허용하지 않기 때문입니다 ...
맞습니다, 서문입니다.
강조하신 부분에 대해...
그리고 조건이 충족되지 않으면 아무 것도 할 필요가 없다면 그에게 어떤 다른 명령을 내려야 합니까? 그리고 충족되지 않는 조건이 주기의 닫는 괄호 앞에 있으면 주기 모드<=9 ...의 조건에 따라 여전히 새 반복의 시작 부분에 도달합니다.
조건 모드<=9 에 따른 반복이 끝나면 상위 주기의 다음 닫는 괄호로 이동하고 조건 ln<=Instr_Count 에 따라 Instr_Count (총 상품 카운터)가 끝날 때까지 다음 통화 상품으로 이동합니다. 그렇지 않습니까? 아니면 닫는 중괄호 앞에 break 를 사용하도록 제안하고 있습니까?
그래도... 어딘가에 에러가 나는데... 어드바이저를 차트에 '매달'하면 오픈 포지션, 최소 거리 변경 등에 대한 메시지가 잇달아 옵니다. 그리고 티크의 출현에도 불구하고 기관총에서처럼 연속적으로 ... :)
스스로 알아낼 수 있는 지식이 부족한 것이 아쉽지만, SRC 를 사용하여 코드를 배치하는 것이 불가능하다면(적어도 저에게는) 어렵습니다.
어쨌든 참여해주셔서 감사합니다. 생각이 나네요... ;)
TheXpert писал(а) >>
무의미한 말.
글쎄요, 스스로 생각해 보세요. 정보가 여러 장에 흩어져 있으면 정보를 처리하는 것이 심리적으로 어렵습니다. 전체 그림을 분석하려면 코드를 계속 앞뒤로 뒤집어야 합니다. 그러나 사람은 이것을 하는 토끼도 아니고 개구리도 아닙니다. 물론 코드가 세 줄로 구성된 경우에는 해당되지 않지만, 샷이 더 복잡합니다.
미끄러짐?
"자동"이란 무엇을 의미합니까? "자동"이라는 용어는 무엇을 의미합니까?
감사합니다. 아마도 맞을 것입니다 ... SL이라면 손실이 증가하는 것이 분명하지만 TP가 이익을 줄이는 이유는 무엇입니까? 이론상으로도 더 많아야 합니까?
"자동"은 독립적으로 일하는 전문가입니다.
감사합니다. 아마도 맞을 것입니다 ... SL이라면 손실이 증가하는 것이 분명하지만 TP가 이익을 줄이는 이유는 무엇입니까? 이론상으로도 더 많아야 합니까?
"자동"은 독립적으로 일하는 전문가입니다.
artmedia70, 다시 출발점으로 돌아왔습니다. 첫 번째이자 가장 중요한 것은 알고리즘입니다. 그것이 프로그램이 작동하는 방식입니다. 명확한 아이디어가 없으면 프로그램이 없는 것입니다. 어떻게 작동해야 하는지 모르는 코드를 만들 수 없기 때문입니다.
올바르게 작동하지 않는 코드를 한 줄씩 살펴보겠습니다. 그냥 다 부숴 봅시다. 즉, 여기에서 이 특정 방법, 도구, 접근 방식을 사용하는 이유를 매우 정확하게 정당화할 수 있습니다. 하지만? (이것은 대중을 위한 작업이 아닙니다. 이것은 자신을 이해하기 위한 시도입니다. 프로그래밍은 먼저 명상이고, 그 다음 볼트, 너트, 은못, 머리핀 및 기타 작은 것들과 연결된 많은 세부 사항입니다). 행위?
안녕하세요!!!
저는 OrderMagicNumber()를 사용하여 특정 양초에 대해 계산하는 내장 함수를 만들 계획이므로 각 양초 및 TF에 대해 고유한 것이 바람직합니다.
특히 2개의 변수를 함께 붙이는 방법을 찾지 못했습니다.
정수 마침표 () 및
날짜/시간 시간[i]
마음에
xxxyyyyyyyyyyy,
여기서 xxx는 Period()의 분이고 yyyyyyyyyy는 Time[i]의 초입니다.
그것을 더 잘 구현하는 방법?
나에게서 그런 초보자 :)
안녕하세요!!!
저는 OrderMagicNumber()를 사용하여 특정 양초에 대해 계산하는 내장 함수를 만들 계획이므로 각 양초 및 TF에 대해 고유한 것이 바람직합니다.
특히 2개의 변수를 함께 붙이는 방법을 찾지 못했습니다.
정수 마침표( ) 및
날짜/시간 시간[i]
마음에
xxxyyyyyyyyyyy,
여기서 xxx는 Period()의 분이고 yyyyyyyyyy는 Time[i]의 초입니다.
그것을 더 잘 구현하는 방법?
나에게서 그런 초보자 :)
마침표는 정수 변수이지만 한 자릿수로 압축할 수 있지만 마법에 데이터 시간이 있는 이유는 무엇입니까? 주문 오픈 시간 등을 알 수 있습니다.
Период это целочисленная переменная, хотя ее можно упаковать до одной цифры, а зачем в магике дататайм? время открытия ордера и так можно узнать.
목표는 주어진 시간 프레임의 주어진 양초에 고유한 마법을 할당하는 것이며, 동일한 개방 시간을 갖는 2개의 양초 m15 및 h1에 대해 서로 달라야 합니다...
그래서 지금 내 주요 아이디어는 계산을 값에 바인딩하는 것입니다.
시간[]과
magick의 시각적 실용성은 중요하지 않으며 5-10자의 int 형식 값으로 사용하는 경향이 있습니다...
편집하다
----------
방법을 찾았습니다... :)
artmedia70, 다시 출발점으로 돌아왔습니다. 첫 번째이자 가장 중요한 것은 알고리즘입니다. 그것이 프로그램이 작동하는 방식입니다. 명확한 아이디어가 없으면 프로그램이 없는 것입니다. 어떻게 작동해야 하는지 모르는 코드를 만들 수 없기 때문입니다.
올바르게 작동하지 않는 코드를 한 줄씩 살펴보겠습니다. 그냥 다 부숴 봅시다. 즉, 여기에서 이 특정 방법, 도구, 접근 방식을 사용하는 이유를 매우 정확하게 정당화할 수 있습니다. 하지만? (이것은 대중을 위한 작업이 아닙니다. 이것은 자신을 이해하기 위한 시도입니다. 프로그래밍은 먼저 명상이고, 그 다음 볼트, 너트, 은못, 머리핀 및 기타 작은 것들과 연결된 많은 세부 사항입니다). 행위?
알고리즘이 있습니다. 그리고 노동자. 저는 그냥 배우는 중이므로 튜토리얼에서 코드를 가져와 필요에 맞게 다시 만듭니다.
현재 상태에서 단순히 터미널에서 무슨 일이 일어나고 있는지 확인하고 정보 표시기 창의 화면에 모든 이벤트를 표시해야 하는 Expert Advisor의 초안 작성
터미널 - 모든 미결 포지션 및 주문을 고려합니다.