Expert Advisor에서 지표 값을 얻기 위해 프로그래밍 방식으로 가능한 시간 프레임을 열거하고 최적화할 수 있는 가능성에 대해 질문했습니다. 이것은 다음과 같은 방법으로 가능합니다 - 예를 들어 -
파일의 코드 조각 - 그러한 작업이 수행된 잡지의 전문가 - 모든 것이 주석과 함께 자세히 설명되어 있습니다.
다른 누군가가 이와 같은 유용한 정보를 찾을 수 있습니다.
고맙습니다 ! 당분간 TF 값을 수동으로 변경합니다(최적화 시간이 오래 걸리고 각 TF의 결과에 따른 분석은 별도).
도움을 줄 수 있는 사람을 위한 또 다른 질문이 있습니다. 비표준 프랙탈의 변형 및 MA 중단 후 양초의 잠재적 신호를 결정하기 위한 코드(이 디자인을 사용하면 중단 후 필요한 양초의 수를 결정할 수 있습니다.) 하지만....! 최적화가 "하기 싫다"...((1년에 1개의 매개변수 Period_MA 의 최적화만 3에서 5로 설정하면 몇 분 이상 걸립니다. 2에서 240으로 설정하면, 당신은 컴퓨터에 대해 잊을 수 있습니다 .... 거기에서 일반적으로 정지되고 얼마나 많은 시간이 필요한지 알려주지 않습니다 ... 최적화에 다른 매개 변수를 포함하는 것에 대해 말하는 것이 아닙니다 - SL, TP, MODE, PRICE_TYPE. , 가능하다면, 코드에 무엇이 잘못되었는지 ...? 최적화가 진행되지 않는 이유는.. 코드가 작동 중입니다. 확인할 수 있습니다. 실제로 코드 자체는 다음과 같습니다.
#include <stdlib.mqh>externint Period_MA = 5 , // Период расчётной МА
ПрибыльФр= 10 , // Не меньше 4
HФр = 1 , // Фильтр над фракталом
Ограничение= 52 ,
PERIOD= 1 , // Период текущего графика (таймфрейм)
MODE= 3 , // Метод усреднения из методов скользящего среднего
PRICE_TYPE= 0 ; // Используемая цена из ценовых константbool Fact_вверх = false, // Движения вверх нет
Fact_вниз = false, // Движения вниз нет
Buy = false, // Инициализация buystop
Sell = false,
ПервФрвверх=false,
ПервФрвниз=false;
color вверх = SpringGreen , // Цвет сделки вверх
вниз = Red , // Цвет сделки вниз
отмена = Yellow , // Цвет отмены сделки
Свеча 1 C= Blue ; // Цвет номера 1С свечиint ticketup, // Ордер вверх
ticketdown, // Ордер вниз
BarTime, // Время текущего бара
Tвверх, // Время сделки вверх
Tвниз, // Время сделки вниз
A, // Переменная массива вверх
B; // Переменная массива внизdouble SL,
TP,
PointX;
int init()
{
if ( Digits == 5 || Digits == 3 ) PointX = Point * 10 ; // Корректировка Point под трёх- пятизнакif ( Digits == 4 || Digits == 2 ) PointX = Point ;
return ( 0 );
}
//--------------------------------------------------------------------int start() // Спец. функция start
{
double MAC1, // Значение МА на n баре
MAC2, // Значение МА на следующей свече
Разность,
Lot= 0.01 ; // Лотstring Symb= Symbol (), // Финанс. инструмент
С 1 = "C1" , // Текст для обозначения ордера
Пусто = " " ; // Текст для обозначения ордераint n= 1 , // Номер свечи, с которой начинается проверка
Фр;
bool Движ_вниз = false,
Движ_вверх = false;
if (BarTime!=Time[ 0 ]) // Условие для того, чтобы программа считала только на начале бара, а не на каждом тике
{
//--------------------------------------------------------------------while (true) // Цикл по перебору свечей вверх до изгиба МА Синей
{
// Обращение к функции техн.инд. MA
MAC1 = iMA ( Symbol (),PERIOD,Period_MA, 0 ,MODE,PRICE_TYPE,n); // Первая сравниваемая свеча
n++; // Переход на следующую свечу
MAC2 = iMA ( Symbol (),PERIOD,Period_MA, 0 ,MODE,PRICE_TYPE,n); // Последующая сравниваемая свеча
Разность = (MAC1 - MAC2)/PointX; // Разница МА между соседними свечами//--------------------------------------------------------------------if ( NormalizeDouble (Разность, Digits ) >= 1 ) // Условие движения вверх
{
Движ_вверх = true;
Движ_вниз = false;
ПервФрвниз=false;
}
if ( NormalizeDouble (Разность, Digits )<- 1 ) // Выход на противоположное движение break ; // Выход из цикла while (перебора свечей)
} // Конец цикла while (перебора свечей)//--------------------------------------------------------------------if (Движ_вверх == true)
{
Print ( "Движ_вверх" );
int Количество = OrdersTotal (); // Количество ордеров на данный момент for ( int i=Количество- 1 ; i>= 0 ;i--) // Цикл перебора ордер
{
if ( OrderSelect (i,SELECT_BY_POS)==true) // Если есть следующий
{
int Tip=OrderType(); // Определения типа ордера//-------------------------------------------------------------------- switch (Tip) // Переключатель на типы ордеров
{
case5 : int N = OrderTicket(); // Метка удаляемого ордера SELLSTOP
Закрыть(N); // Вызов функции удаления отложенного ордераcontinue ;
}
}
}
for (i= 2 ;i<=n- 2 ;i++)
{
if ( NormalizeDouble (High[i], Digits )> NormalizeDouble (High[i+ 1 ], Digits )
&& NormalizeDouble (High[i], Digits )> NormalizeDouble (High[i- 1 ], Digits ))
{
if (ПервФрвверх==false)
{
ПервФрвверх=true;
Фр=i;
} else
{
Фр=i;
}
}
if ( NormalizeDouble (High[i], Digits )== NormalizeDouble (High[i+ 1 ], Digits )
&& NormalizeDouble (High[i], Digits )> NormalizeDouble (High[i+ 2 ], Digits )
&& NormalizeDouble (High[i], Digits )> NormalizeDouble (High[i- 1 ], Digits ))
{
if (ПервФрвверх==false)
{
ПервФрвверх=true;
Фр=i;
} else
{
Фр=i;
}
}
}
if (ПервФрвверх==true)
{
A++;
Print ( "n = " ,n);
double ОткрФрвверх=High[Фр]+HФр*PointX;
SL=Bid-Ограничение*PointX;
TP=Bid+ПрибыльФр*PointX; // Заявленная цена TPint Ind_max = ArrayMaximum (High,n, 0 ); // Индекс бара макс.ц. double max = High[Ind_max]; // Искомая макс ценаint Min_Dist=MarketInfo( Symbol (),MODE_STOPLEVEL); // Мин. дистанцияint Время_фрактала=Time[Фр];
double Цена_рисунка=Open[Фр];
if (Tвверх!=Time[Фр]) // Если цена ещё не достигла ТP(при включении сов.)
{
Tвверх=Time[Фр]; // Определение времени для этого условия открытияwhile (true) // Цикл открытия орд.
{
ticketup= OrderSend (Symb, OP_BUY, Lot, Ask, 0 , SL, TP, NULL ,A, 0 ,вверх); // Ордер вверхint Error= GetLastError ();
Print ( "Error = " ,Error);
switch (Error) // Преодолимые ошибки
{
case6 : Alert ( "Нет связи с торговым сервером. Пробуем ещё раз.." );
RefreshRates(); // Обновим данныеSleep ( 1 ); // Задержка в цикле до нового тикаcontinue ; // На след. итерацию
}
break ; // Выход из цикла
}
}
}
}
추가 백분율 확인을 수행하십시오.
어떤 단계에서 무엇에 대한 비율은 무엇입니까?
이것을 start()에 넣어
왜냐하면 init()에서 작동하지 않습니다.
여전히 포인트 를 확인할 수 있습니까?
나는 그것이 무엇을 제공하는지 볼 것입니다 ...
어떤 단계에서 무엇에 대한 비율은 무엇입니까?
이것을 start()에 넣어
왜냐하면 init()에서 작동하지 않습니다.
여전히 포인트를 확인할 수 있습니까?
나는 그것이 무엇을 제공하는지 볼 것입니다 ...
print()에 Point가 있는 삽입된 Digits, 왜냐하면 네 개의 창에 동일한 Expert Advisor가 있는데 다음과 같은 사진이 있습니다.
저것들. 3개의 창에는 5자리 숫자가 있고 1개에는 4자리 글리치가 있습니다.
나는 모든 창문을 닫고 다시 열었고 고문을 설치하고 도처에 5 개의 표지판을 설치했습니다 ...
내가 창문을 열었을 때 DC는 약간의 케미스트리를 가지고 있었던 것 같다.
질문이 마감되었습니다...
Expert Advisor에서 지표 값을 얻기 위해 프로그래밍 방식으로 가능한 시간 프레임을 열거하고 최적화할 수 있는 가능성에 대해 질문했습니다. 이것은 다음과 같은 방법으로 가능합니다 - 예를 들어 -
파일의 코드 조각 - 그러한 작업이 수행된 잡지의 전문가 - 모든 것이 주석과 함께 자세히 설명되어 있습니다.
다른 누군가가 이와 같은 유용한 정보를 찾을 수 있습니다.
고맙습니다 ! 당분간 TF 값을 수동으로 변경합니다(최적화 시간이 오래 걸리고 각 TF의 결과에 따른 분석은 별도).
도움을 줄 수 있는 사람을 위한 또 다른 질문이 있습니다. 비표준 프랙탈의 변형 및 MA 중단 후 양초의 잠재적 신호를 결정하기 위한 코드(이 디자인을 사용하면 중단 후 필요한 양초의 수를 결정할 수 있습니다.) 하지만....! 최적화가 "하기 싫다"...((1년에 1개의 매개변수 Period_MA 의 최적화만 3에서 5로 설정하면 몇 분 이상 걸립니다. 2에서 240으로 설정하면, 당신은 컴퓨터에 대해 잊을 수 있습니다 .... 거기에서 일반적으로 정지되고 얼마나 많은 시간이 필요한지 알려주지 않습니다 ... 최적화에 다른 매개 변수를 포함하는 것에 대해 말하는 것이 아닙니다 - SL, TP, MODE, PRICE_TYPE. , 가능하다면, 코드에 무엇이 잘못되었는지 ...? 최적화가 진행되지 않는 이유는.. 코드가 작동 중입니다. 확인할 수 있습니다. 실제로 코드 자체는 다음과 같습니다.
모두 맞지 않았습니다. 추가하겠습니다.
캐치는 무엇입니까, 누가 알겠습니까?
여기 :
그리고 끝:
보호기 및 스크립트를 삽입하는 방법 또는 위치를 알려주세요 ???
https://docs.mql4.com/ru/ 모든 것이 저장된 디렉토리가 작성됩니다.
https://docs.mql4.com/ru/ 모든 것이 저장된 디렉토리가 작성됩니다.
고마워