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

 
SantaClaus:
Английский не является моим родным языком, но я действительно не думал, что мой вопрос был настолько неправильным. Вместо того, чтобы "подбирать слова", давайте найдем решение моей проблемы. Я попробовал задать вопрос еще раз.

Какой лучший способ для моего советника распознать простые путы и коллы из моего индикатора?

Очевидно, мой код не сработал, и я попытался заменить "1" на "0", как вы мне сказали.

Опубликуйте (прикрепите) ваш код, который не работает здесь - файлы mql, которые вы тестируете и которые вы написали до сих пор.

 

Это мой личный код, поэтому я не хочу им делиться. Но что еще вам нужно увидеть, кроме кода, который я предоставил?

Есть ли что-то, что я забыл?

 
SantaClaus:
Это мой личный код, поэтому я не хочу им делиться. Но что еще вам нужно увидеть, кроме кода, который я предоставил? Есть ли что-то, что я забыл?

То есть вы хотите, чтобы кто-то помог вам с кодированием, но не хотите показывать код для проверки на ошибки, а вместо этого утверждаете, что все советы, которые вы получили и которые работают в тысячах и тысячах других кодов, не работают у вас?

ХОРОШО. Теперь я понимаю вашу позицию. Удачи вам в кодировании

Счастливой торговли

 

Частный код, который не работает? Интересное

 

Два моих сообщения были удалены по неизвестной мне причине.

Однако, проблема, с которой я столкнулся, заключалась в том, что у меня было несколько других буферов, которые мешали тому, который я пытался прочитать. Теперь у меня есть рабочее решение.

 

Мне нужна помощь, пожалуйста... Как передать параметры символа с суффиксом (micro) в функцию, содержащую icustom. Если я не использую функцию, я помещаю имя символа в двойные кавычки и это работает, например icustom("EURUSDmicro",0,channel-signal",2,1), но когда я использую функцию, двойные кавычки не передаются .Пожалуйста, посмотрите следующий код, что я имею в виду

void OnTick()

{

CalcDisplay("EURUSDmicro"); //--------FUNCTION CALL-------

}

void CalcDisplay(string TxtCurrency) //--------FUNCTION-------

{

double Value=icustom(TxtCurrency,0,channel-signal",2,1);

...

...

..

}

 
Richard Sidric:
Мне нужна помощь, пожалуйста... Как передать параметры символа с суффиксом (micro) в функцию, содержащую icustom. Если я не использую функцию, я помещаю имя символа в двойные кавычки и это работает, например icustom("EURUSDmicro",0,channel-signal",2,1), но когда я использую функцию, двойные кавычки не передаются. Пожалуйста, посмотрите следующий код, что я имею в виду.

void OnTick()

{

CalcDisplay("EURUSDmicro"); //--------FUNCTION CALL-------

}

void CalcDisplay(string TxtCurrency) //--------FUNCTION-------

{

double Value=icustom(TxtCurrency,0,channel-signal",2,1);

...

...

..

}

Вам не нужно передавать кавычки. Необходимо только, чтобы это была строка.

___________________

PS: в вашем вызове iCiustom не хватает одной кавычки. Сейчас это выглядит так:

double Value=icustom(TxtCurrency,0,channel-signal",2,1);

а должно быть так:

double Value=icustom(TxtCurrency,0, "channel-signal",2,1);

 

привет всем у меня есть один индикатор t4 ниже прилагаю просто я хочу знать как я могу использовать его для робо торговли и робо торговли или ea это одно и тоже или нет

(я уже использую его для ручной торговли, сидя перед компьютером, но)

если я использую его для автоматической торговли, то как, пожалуйста, помогите мне кто-нибудь, заранее спасибо.

//------------------------------------------------------------------

// оригинал и первая реализация от mony

// tris версия от mladen

//------------------------------------------------------------------

#property copyright "mony & mladen"

#property link "made at www.forex.tsd.com"

#property indicator_chart_window

#property indicator_buffers 5

#property indicator_color1 MediumBlue

#property indicator_color2 Red

#property indicator_color3 MediumBlue

#property indicator_color4 Red

#property indicator_color5 Red

#property indicator_width3 3

#property indicator_width4 3

#property indicator_width5 3

#property strict

//

//

//

//

//

//

enum enDisplay

{

dis_line, // Отображение цветной линии

dis_bars, // Отображение цветных полос

dis_both // Отображать как цветные линии, так и полосы

};

extern int CCIperiod = 3; // Период CCI

extern int ATRperiod = 300; // Период ATR

extern ENUM_APPLIED_PRICE applied_price = PRICE_TYPICAL; // Используемая цена

extern enDisplay DisplayType = dis_line; // Тип дисплея

extern bool alertsOn = true; // Включить оповещения

extern bool alertsOnCurrent = false; // Оповещения на текущем (еще открытом) баре

extern bool alertsMessage = true; // Оповещения должны отображать всплывающее сообщение

extern bool alertsSound = true; // Оповещения должны воспроизводить звук

extern bool alertsNotify = true; // Оповещения должны отправлять уведомления

extern bool alertsEmail = false; // Оповещения должны отправлять электронную почту

extern string soundFile = "o.wma"; // Звуковой файл, используемый для звуковых оповещений

double TrLine[];

double TrendDowna[];

double TrendDownb[];

double HistUp[];

double HistDn[];

double trend[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

IndicatorBuffers(6);

int styleLine = DRAW_LINE; if (DisplayType==dis_bars) styleLine=DRAW_NONE;

int styleBars = DRAW_HISTOGRAM; if (DisplayType==dis_line) styleBars=DRAW_NONE;

SetIndexBuffer(0, HistUp); SetIndexStyle(0,styleBars);

SetIndexBuffer(1, HistDn); SetIndexStyle(1,styleBars);

SetIndexBuffer(2, TrLine); SetIndexStyle(2,styleLine);

SetIndexBuffer(3, TrendDowna); SetIndexStyle(3,styleLine);

SetIndexBuffer(4, TrendDownb); SetIndexStyle(4,styleLine);

SetIndexBuffer(5, trend);

return(0);

}

int deinit(){ return(0); }

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

//

//

//

//

//

if (trend[limit]==-1) CleanPoint(limit,TrendDowna,TrendDownb);

for(int i=limit; i >= 0; i--)

{

double cciTrendNow = iCCI(NULL, 0, CCIperiod, applied_price, i);

if (cciTrendNow >= 0)

{

TrLine = NormalizeDouble(Low - iATR(NULL, 0, ATRperiod, i),Digits);

if (i<(Bars-1) && TrLine < TrLine) TrLine = TrLine;

}

if (cciTrendNow <= 0)

{

TrLine = NormalizeDouble(High + iATR(NULL, 0, ATRperiod, i),Digits);

if (i TrLine) TrLine = TrLine;

}

//

//

//

//

//

TrendDowna = EMPTY_VALUE;

TrendDownb = EMPTY_VALUE;

if (i<(Bars-1))

{

trend = trend;

если (TrLine> TrLine) trend = 1;

if (TrLine< TrLine) trend =-1;

if (trend == -1) PlotPoint(i,TrendDowna,TrendDownb,TrLine);

if (trend == 1) { HistUp = High; HistDn = Low; }

if (trend == -1) { HistDn = High; HistUp = Low; }

}

}

manageAlerts();

return(0);

}

//+-------------------------------------------------------------------

//|

//+-------------------------------------------------------------------

//

//

//

//

//

void manageAlerts()

{

if (alertsOn)

{

int whichBar = 1; if (alertsOnCurrent) whichBar = 0;

if (trend[whichBar] != trend[whichBar+1])

{

if (trend[whichBar] == 1) doAlert(whichBar, "up");

if (trend[whichBar] ==-1) doAlert(whichBar, "down");

}

}

}

//

//

//

//

//

void doAlert(int forBar, string doWhat)

{

static string previousAlert="ничего";

static datetime previousTime;

строковое сообщение;

if (previousAlert != doWhat || previousTime != Time[forBar]) {

previousAlert = doWhat;

previousTime = Time[forBar];

//

//

//

//

//

message = Symbol()+"" в "+TimeToStr(TimeLocal(),TIME_SECONDS)+" SP MY trend changed to "+doWhat;

if (alertsMessage) Alert(message);

if (alertsNotify) SendNotification(message);

if (alertsEmail) SendMail(Symbol()+" S P MY",message);

if (alertsSound) PlaySound(soundFile);

}

}

//-------------------------------------------------------------------

//

//-------------------------------------------------------------------

//

//

//

//

//

void CleanPoint(int i,double& first[],double& second[])

{

if (i>=Bars-3) return;

if ((second != EMPTY_VALUE) && (second != EMPTY_VALUE))

second = EMPTY_VALUE;

else

if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first == EMPTY_VALUE))

first = EMPTY_VALUE;

}

void PlotPoint(int i,double& first[],double& second[],double& from[])

{

if (i>=Bars-2) return;

if (first == EMPTY_VALUE)

if (first == EMPTY_VALUE)

{ first = from; first = from; second = EMPTY_VALUE; }

else { second = from; second = from; first = EMPTY_VALUE; }

else { first = from; second = EMPTY_VALUE; }

}

s_p_mony__alerts_1.01.mq4

Файлы:
 
mony:
привет всем у меня есть один индикатор t4 ниже прикреплен просто я хочу знать как я могу использовать его для роботрейдинга и роботрейдинг или ea это одно и тоже или нет

(я уже использую его для ручной торговли, сидя перед компьютером, но)

если я использую это для автоматической торговли, то как, пожалуйста, помогите мне кто-либо, спасибо заранее

//------------------------------------------------------------------

// оригинал и первая реализация от mony

// tris версия от mladen

//------------------------------------------------------------------

#property copyright "mony & mladen"

#property link "made at www.forex.tsd.com"

#property indicator_chart_window

#property indicator_buffers 5

#property indicator_color1 MediumBlue

#property indicator_color2 Red

#property indicator_color3 MediumBlue

#property indicator_color4 Red

#property indicator_color5 Red

#property indicator_width3 3

#property indicator_width4 3

#property indicator_width5 3

#property strict

//

//

//

//

//

//

enum enDisplay

{

dis_line, // Отображение цветной линии

dis_bars, // Отображение цветных полос

dis_both // Отображать как цветные линии, так и полосы

};

extern int CCIperiod = 3; // Период CCI

extern int ATRperiod = 300; // Период ATR

extern ENUM_APPLIED_PRICE applied_price = PRICE_TYPICAL; // Используемая цена

extern enDisplay DisplayType = dis_line; // Тип дисплея

extern bool alertsOn = true; // Включить оповещения

extern bool alertsOnCurrent = false; // Оповещения на текущем (еще открытом) баре

extern bool alertsMessage = true; // Оповещения должны отображать всплывающее сообщение

extern bool alertsSound = true; // Оповещения должны воспроизводить звук

extern bool alertsNotify = true; // Оповещения должны отправлять уведомления

extern bool alertsEmail = false; // Оповещения должны отправлять электронную почту

extern string soundFile = "o.wma"; // Звуковой файл, используемый для звуковых оповещений

double TrLine[];

double TrendDowna[];

double TrendDownb[];

double HistUp[];

double HistDn[];

double trend[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

IndicatorBuffers(6);

int styleLine = DRAW_LINE; if (DisplayType==dis_bars) styleLine=DRAW_NONE;

int styleBars = DRAW_HISTOGRAM; if (DisplayType==dis_line) styleBars=DRAW_NONE;

SetIndexBuffer(0, HistUp); SetIndexStyle(0,styleBars);

SetIndexBuffer(1, HistDn); SetIndexStyle(1,styleBars);

SetIndexBuffer(2, TrLine); SetIndexStyle(2,styleLine);

SetIndexBuffer(3, TrendDowna); SetIndexStyle(3,styleLine);

SetIndexBuffer(4, TrendDownb); SetIndexStyle(4,styleLine);

SetIndexBuffer(5, trend);

return(0);

}

int deinit(){ return(0); }

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

//

//

//

//

//

if (trend[limit]==-1) CleanPoint(limit,TrendDowna,TrendDownb);

for(int i=limit; i >= 0; i--)

{

double cciTrendNow = iCCI(NULL, 0, CCIperiod, applied_price, i);

if (cciTrendNow >= 0)

{

TrLine = NormalizeDouble(Low - iATR(NULL, 0, ATRperiod, i),Digits);

if (i<(Bars-1) && TrLine < TrLine) TrLine = TrLine;

}

if (cciTrendNow <= 0)

{

TrLine = NormalizeDouble(High + iATR(NULL, 0, ATRperiod, i),Digits);

if (i TrLine) TrLine = TrLine;

}

//

//

//

//

//

TrendDowna = EMPTY_VALUE;

TrendDownb = EMPTY_VALUE;

if (i<(Bars-1))

{

trend = trend;

если (TrLine> TrLine) trend = 1;

if (TrLine< TrLine) trend =-1;

if (trend == -1) PlotPoint(i,TrendDowna,TrendDownb,TrLine);

if (trend == 1) { HistUp = High; HistDn = Low; }

if (trend == -1) { HistDn = High; HistUp = Low; }

}

}

manageAlerts();

return(0);

}

//+-------------------------------------------------------------------

//|

//+-------------------------------------------------------------------

//

//

//

//

//

void manageAlerts()

{

if (alertsOn)

{

int whichBar = 1; if (alertsOnCurrent) whichBar = 0;

if (trend[whichBar] != trend[whichBar+1])

{

if (trend[whichBar] == 1) doAlert(whichBar, "up");

if (trend[whichBar] ==-1) doAlert(whichBar, "down");

}

}

}

//

//

//

//

//

void doAlert(int forBar, string doWhat)

{

static string previousAlert="ничего";

static datetime previousTime;

строковое сообщение;

if (previousAlert != doWhat || previousTime != Time[forBar]) {

previousAlert = doWhat;

previousTime = Time[forBar];

//

//

//

//

//

message = Symbol()+"" в "+TimeToStr(TimeLocal(),TIME_SECONDS)+" SP MY trend changed to "+doWhat;

if (alertsMessage) Alert(message);

if (alertsNotify) SendNotification(message);

if (alertsEmail) SendMail(Symbol()+" S P MY",message);

if (alertsSound) PlaySound(soundFile);

}

}

//-------------------------------------------------------------------

//

//-------------------------------------------------------------------

//

//

//

//

//

void CleanPoint(int i,double& first[],double& second[])

{

if (i>=Bars-3) return;

if ((second != EMPTY_VALUE) && (second != EMPTY_VALUE))

second = EMPTY_VALUE;

else

if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first == EMPTY_VALUE))

first = EMPTY_VALUE;

}

void PlotPoint(int i,double& first[],double& second[],double& from[])

{

if (i>=Bars-2) return;

if (first == EMPTY_VALUE)

if (first == EMPTY_VALUE)

{ first = from; first = from; second = EMPTY_VALUE; }

else { second = from; second = from; first = EMPTY_VALUE; }

else { first = from; second = EMPTY_VALUE; }

}

s_p_mony__alerts_1.01.mq4

Вы уже пробовали использовать вызов iCustom() из советника?

Все, что вам нужно сделать, это вызвать индикатор с помощью функции iCustom(), прочитать буфер тренда (буфер 5 в номинации metatrader) и когда он изменит значение с -1 на +1 или с +1 на -1, у вас будет сигнал.

 

сэр, пожалуйста, извините, сэр ......... я не знаю, что такое вызов iCustom()... и где его можно попробовать???? ...... где я нашел его в mt4 или при модификации индикатора просто скажите мне, как я могу использовать этот индикатор S P mony в автоматическом трейдинге / робо-трейдинге это все сэр ..................

если это все долгий процесс, то пожалуйста извините меня и пожалуйста забудьте вышеуказанные сообщения спасибо сэр

Причина обращения: