Функция ICustom - страница 3

 

В основном для тестирования/проверки

Я разрабатываю свои стратегии с помощью индикатора и хочу проверить, что советник работает так же, как и индикатор. Если я получу немного больше опыта работы с MT4, возможно, я смогу сделать логику индикатора в виде подпрограммы или DLL и затем вызывать ее как из моего индикатора, так и из советника.

Когда вы используете тестер, вы можете открыть график. Если бы я мог переопределить эту логику, я мог бы поместить объекты и на этот график.

Кто-нибудь знает советников, которые показывают графически, что они делают?

 

Я сделал свой первый ICustom, используя Fisher m11 как пользовательский. Он показывает индикатор в тестере, который является красивым графиком, но в большинстве случаев проигрывает. Fisher m11 является индикатором и должен находиться в этой папке. Fisher Auto EA m11 должен находиться в папке experts. Вот как я поместил его в советник:

iCustom(NULL,0, "Fisher_m11",Fisher_Period, IndexSmoothing,PriceSmoothing,0);

Вот формат для его использования: double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift).

Это может помочь некоторым, кто работает над созданием своих собственных советников.

Файлы:
 

У меня аналогичный вопрос.

Кто-нибудь знает, как использовать

SHI_SilverTrendSigAlert

и

SilverTrend_Signal With Alert v3

в советнике?

Мне нужна профессиональная помощь.

 

SilverTrend хорош для торговли, но сигнал будет продолжаться до закрытия бара, что может затруднить создание советника. Я включил zip-файл с 12 советниками по серебру, чтобы вы могли взглянуть на них.

Файлы:
 

Просто хотел уточнить конечные значения строки iCustom в моей голове.

Линия и сдвиг

Итак, если у меня есть индикатор типа VQ, который имеет только одну графическую линию, и я хочу выяснить, на предыдущей закрытой свече, сигнализировал ли он стрелкой вверх для условия покупки или сигнализировал ли он стрелкой вниз для условия продажи, мне нужно будет установить два условия, например;

double VQ0 = iCustom(NULL, 0, "VQ", false,0,5,3,1,5,true,false,true,true,false,true,1485, 1,1);

double VQ1 = iCustom(NULL, 0, "VQ", false,0,5,3,1,5,true,false,true,true,false,true,1485, 2,1);

[/code]

So the above is going to check for an up condition (up) or sell (down) condition on the closed bar, correct?

Then my Buy and Sell code should be; correct?

//Buy

if (VQ0>VQ1 && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

//Sell

if (VQ0<VQ1 && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

[/code]

Now if I wanted to add a second indicator so that TWO conditions need to be met at the same time to trigger a trade, it has two graphical lines (Don't know if it matters by how many lines it has, the indicator knows what it's Buy and Sell conditions are, correct?) My code would change to;

[code]

double VQ0 = iCustom(NULL, 0, "VQ", false,0,5,3,1,5,true,false,true,true,false,true,1485, 1,1);

double VQ1 = iCustom(NULL, 0, "VQ", false,0,5,3,1,5,true,false,true,true,false,true,1485, 2,1);

double QQEA0 = iCustom(NULL, 0, "QQEA",5,14,4.236, 1, 1);

double QQEA1 = iCustom(NULL, 0, "QQEA",5,14,4.236, 2, 1);

and Buy and Sell code should be

[code]

//Buy

if (VQ0>VQ1 && QQEA0>QQEA1 && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

//Sell

if (VQ0<VQ1 && QQEA0<QQEA1 && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

Edit: Только что провел обратный тест, и кажется, что он торгует как каждый M30 (Chart TF). Я хочу, чтобы он инициировал торговлю ТОЛЬКО при первом сигнальном условии, а затем ждал следующего противоположного сигнального условия. Похоже, что когда оба индикатора соглашаются на покупку, он торгует, затем, когда сделка закрывается, он продолжает другую сделку на покупку на следующей свече, если условия все еще выполняются. Это не то, что я хочу Я хочу только одну сделку на каждый сигнал покупки/продажи. Спасибо

Во вложении два советника, один называется My First EA, который кто-то модифицировал для меня, потому что они думали, что условия были неправильными, и один я сделал, используя шаблон под названием YourExpertAdvisor. Оба ли они правильные?

Спасибо.

Файлы:
 

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

Один из способов добиться этого - сделать советник stateful EA и использовать следующий дизайн:

static int last_signal = 0;

int signal = 0;

if ( ) signal = 1;

if ( ) signal = -1;

if ( signal != 0 && signal != last_signal ) {

// New signal series...

}

last_signal = signal;

 
ralph.ronnquist:
Если я правильно понял, вы хотите, чтобы ваш советник рассматривал непрерывную серию соглашений индикаторов как "один сигнал", а не то, что каждый случай соглашения является сигналом.

Один из способов сделать это - сделать его stateful EA и использовать следующий дизайн:

static int last_signal = 0;

int signal = 0;

if ( ) signal = 1;

if ( ) signal = -1;

if ( signal != 0 && signal != last_signal ) {

// New signal series...

}

last_signal = signal;

Привет, Ральф, возможно, эта тема, которую я начал, будет более понятной;

https://www.mql5.com/en/forum/178432

Спасибо

 
codersguru:
homicida,

Приношу свои извинения за задержку.

Пожалуйста, найдите прикрепленную модифицированную версию LSMA и iCustom_Demo.

Я добавил новый буфер в LSMA для хранения текущего цвета (1=красный, 2=зеленый и 3=желтый).

Где (1=нисходящий тренд, 2=восходящий тренд и 3=без тренда).

Чтобы использовать iCustomfunction для получения значения этого буфера, вы можете написать:

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

Спасибо Codersguru!!!

Я смог создать версию своего Digital Compass для использования с дисковыми индикаторами.

 

Было бы неплохо, если бы вы, TheRumpledOne, также научились прикреплять изображения, а не делать их встроенными; с тем хламом, который вы вставляете, он просто тратит много места.

 
ralph.ronnquist:
Было бы неплохо, если бы вы, TheRumpledOne, также научились прикреплять изображения, а не вставлять их в строку; с тем хламом, который вы вставляете, он просто тратит много места.

Если это "хлам", то зачем его вообще размещать?