Помощь в кодировании - страница 477

 

Здравствуйте мастер кодер,

Я пытаюсь написать индикатор PPO_alt, график 1 на рисунках a и b, но он не строится корректно в режиме реального времени.

Поэтому я пытаюсь модифицировать оригинальный PPO (график 2), но он все еще не корректен. Пожалуйста, посмотрите и исправьте оба варианта.

Заранее спасибо.

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

Файлы:
ppo_mod.rar  80 kb
 
download38:
Здравствуйте, мастер-кодер,

Я пытаюсь написать индикатор PPO_alt, график 1 на рисунках a и b, но он не строится правильно в режиме реального времени.

Поэтому я пытаюсь модифицировать сигнальный PPO (график 2), но он тоже не отображается корректно. Пожалуйста, посмотрите и исправьте оба варианта.

Заранее спасибо.

PS. Пожалуйста, задавайте больше вопросов, если вам не понятно.

Почему вы делаете одно и то же в двух циклах?

 

Здравствуйте Младен

нужна помощь

не получается получить живую цитату, пожалуйста, помогите

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

//| функция инициализации эксперта |

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

#свойство indicator_chart_window

double ExtMapBuffer1[];

extern int RSI_periode = 14;

extern int RSI_level = 50;

extern color BuyColor = clrLime;

extern color SellColor = clrRed;

extern int horizontal = 20;

extern int vertical = 50;

extern int shift = 1;

extern double percent = 0.25;

extern string fontmode = "Arial";

extern int fontsize = 10;

extern color fontcolor = clrSkyBlue;

extern int columnspacing = 100;

int init()

{

//----

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

//----

return(0);

}

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

//| функция деинициализации эксперта |

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

int deinit()

{

//----

ObjectsDeleteAll();

ObjectDelete("INFO");

//----

return(0);

}

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

//| функция запуска эксперта |

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

int start()

{

//----

string symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"};

строковый символ;

string info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};

string infolabel;

string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"};

string font = "Terminal";

int counted_bars=IndicatorCounted();

int symlimit = ArraySize(symlist2);

int timelimit = ArraySize(info2);

for(int i=0;i<symlimit;i++)

{

symbol = symlist2;

Display("symlabel" + symbol + i, horizontal,vertical);

ObjectSetText("symlabel" + symbol + i, "SYMBOL", fontsize, font, Pink);

Display("sym" + symbol + i, horizontal,vertical +((i+1)*18));

ObjectSetText("sym" + symbol + i, "" + symbol + "", fontsize, font, Yellow);

for(int j=0;j<timelimit;j++)

{

infolabel = info2[j];

Display("infolabel" + j, horizontal+((j+1)*100),vertical);

ObjectSetText("infolabel" + j, timeText[j], fontsize, font, Pink);

Display("infolabel2" + символ + ((j+1)*columnspacing), horizontal+((j+1)*100),vertical+((i+1)*18));

ObjectSetText("infolabel2" +symbol+ ((j+1)*columnspacing), infolabel , fontsize, font, fontcolor);

}

}

//----

return(0);

}

void Display(string name, int x, int y)

{

ObjectCreate(name, OBJ_LABEL, 0, 0, 0, 0);

ObjectSet(name, OBJPROP_CORNER, 0);

ObjectSet(name, OBJPROP_XDISTANCE, x);

ObjectSet(name, OBJPROP_YDISTANCE, y);

ObjectSet(name, OBJPROP_BACK, FALSE);

}

 
nbtrading:
Почему вы делаете одно и то же в двух циклах?

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

Важной линией является мультивысота, с которой у меня проблемы.

Спасибо за вопрос.

 

Алгоритм "Закрыть BUY" и "Закрыть SELL"

Здравствуйте про-кодеры,

Я хотел бы узнать, может ли кто-нибудь проанализировать алгоритм "Close BUY" и "Close SELL".

Советник не открывает новую позицию после того, как произошел стоп-лосс или смена тренда.

Система просто закрывает позицию, следующая позиция будет открыта при новом изменении тренда, что приводит к потере возможности.

(См. скриншот).

void CheckForClose()

{

RefreshRates();

double cl_diCustom0 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,0,bar);

double cl_diCustom1 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);

double cl_diCustom2 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);

double cl_diCustom3 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar+1);

double cl_diMA3 = iMA(s_symbol,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar);

double cl_diMA4 = iMA(s_symbol,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar+1);

for(int i=0;i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!= MAGIC) continue;

if(OrderSymbol() != s_symbol) continue;

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

//| Close BUY |

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

if(cl_diCustom0!=cl_diCustom1) // Проверка тренда

{

if(OrderType()==OP_BUY)

{

if(cl_diCustom0<cl_diCustom1 && cl_diCustom2=cl_diMA4)

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);

if(buyClose==false)

{

int ErrorCode = GetLastError();

string ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert = StringConcatenate("Закрытие ордера на покупку - ошибка ",ErrorCode,": ",ErrDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID), "Lots: ",OrderLots(), "Ticket: ",OrderTicket());

Print(ErrLog);

}

break;

} // mod

}

}

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

//| Close SELL |

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

if(cl_diCustom0!=cl_diCustom1)

{

if(OrderType()==OP_SELL)

{

if(cl_diCustom0>cl_diCustom1 && cl_diCustom2>cl_diMA3 && cl_diCustom3<=cl_diMA4)

{

bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);

if(sellClose == false)

{

ErrorCode = GetLastError();

ErrDesc = ErrorDescription(ErrorCode);

ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts==true) Alert(ErrAlert);

ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK), "Lots: ",OrderLots(), "Ticket: ",OrderTicket());

Print(ErrLog);

}

break;

} // mod

}

}

}

}

Файлы:
 
tfi_markets:
Здравствуйте, Pro-Coders,

Мне интересно, не мог бы кто-нибудь просмотреть алгоритм "Close BUY" и "Close SELL".

Советник не открывает новую позицию после того, как произошел стоп-лосс или смена тренда.

Система просто закрывает позицию, следующая позиция будет открыта при новом изменении тренда, что приводит к потере возможности.

(Пожалуйста, смотрите скриншот).

Измените это:

for(int i=0;i<OrdersTotal(); i++)

на следующий

for(int i=OrdersTotal()-1;i>=0 ; i--)

 
mladen:
Сообщите нам, что случилось. Возможно, это проблема конкретного билда metatrader (я использую билд 788).

шахта build 765

Pruchik предоставил эту версию здесь,

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

но нужен дополнительный скрипт для удаления линий индикатора Gann sq9, если он изменяется, оставляя линии на графике.

 

нужна помощь в решении этой проблемы с информацией о мониторе......

vegadigitalco:
Здравствуйте Младен и все старшие кодеры

нужна помощь в решении проблемы с отображением информации......

не получается получить живую цитату, пожалуйста, помогите

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

//| функция инициализации эксперта |

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

#свойство indicator_chart_window

double ExtMapBuffer1[];

extern int RSI_periode = 14;

extern int RSI_level = 50;

extern color BuyColor = clrLime;

extern color SellColor = clrRed;

extern int horizontal = 20;

extern int vertical = 50;

extern int shift = 1;

extern double percent = 0.25;

extern string fontmode = "Arial";

extern int fontsize = 10;

extern color fontcolor = clrSkyBlue;

extern int columnspacing = 100;

int init()

{

//----

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

//----

return(0);

}

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

//| функция деинициализации эксперта |

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

int deinit()

{

//----

ObjectsDeleteAll();

ObjectDelete("INFO");

//----

return(0);

}

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

//| функция запуска эксперта |

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

int start()

{

//----

string symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"};

строковый символ;

string info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};

string infolabel;

string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"};

string font = "Terminal";

int counted_bars=IndicatorCounted();

int symlimit = ArraySize(symlist2);

int timelimit = ArraySize(info2);

for(int i=0;i<symlimit;i++)

{

symbol = symlist2;

Display("symlabel" + symbol + i, horizontal,vertical);

ObjectSetText("symlabel" + symbol + i, "SYMBOL", fontsize, font, Pink);

Display("sym" + symbol + i, horizontal,vertical +((i+1)*18));

ObjectSetText("sym" + symbol + i, "" + symbol + "", fontsize, font, Yellow);

for(int j=0;j<timelimit;j++)

{

infolabel = info2[j];

Display("infolabel" + j, horizontal+((j+1)*100),vertical);

ObjectSetText("infolabel" + j, timeText[j], fontsize, font, Pink);

Display("infolabel2" + символ + ((j+1)*columnspacing), horizontal+((j+1)*100),vertical+((i+1)*18));

ObjectSetText("infolabel2" +symbol+ ((j+1)*columnspacing), infolabel , fontsize, font, fontcolor);

}

}

//----

return(0);

}

void Display(string name, int x, int y)

{

ObjectCreate(name, OBJ_LABEL, 0, 0, 0, 0);

ObjectSet(name, OBJPROP_CORNER, 0);

ObjectSet(name, OBJPROP_XDISTANCE, x);

ObjectSet(name, OBJPROP_YDISTANCE, y);

ObjectSet(name, OBJPROP_BACK, FALSE);

}
 

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

Например:

7

CADJPY

CHFJPY

EURJPY

GBPJPY

NZDJPY

USDJPY

AUDJPY

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

int handle, NL,i,pos[];

string str,word;

handle=FileOpen("test.txt",FILE_READ);//try to open file

if(handle==-1)return(0);// if not exist

if(FileSize(handle)==0){FileClose(handle); return(0); } //if empty

while(!FileIsEnding(handle))//read file to the end by paragraph. if you have only one string, omit it

{

str=FileReadString(handle);//read one paragraph to the string variable

if(str!="")//if string not empty

{

NL=0;

for(i=0;i<StringLen(str);i++)

{

if(StringGetChar(str,i)==10)// look for newline (Charcode:10) only

{

NL++;//yes, we found one more newline

ArrayResize(pos,NL);//increase array

pos[NL-1]=i;//write the number of newline position to array

}

}//now we have array with numbers of positions of all newline

for(i=0;i<=NL;i++)//start to read elements of string

{

if(i==0) word=StringSubstr(str,0,pos[0]);//the first element of string (in this case is the number 7)

else word=StringSubstr(str,pos+1,pos-pos-1);

}

}

}

FileClose(handle); //close file

return(0);

 
download38:
Здравствуйте, мастер-кодер,

Я пытаюсь написать индикатор PPO_alt, график 1 на рисунках a и b, но он не строится правильно в режиме реального времени.

Поэтому я пытаюсь модифицировать сигнальный PPO (график 2), но он тоже не отображается корректно. Пожалуйста, посмотрите и исправьте оба варианта.

Заранее спасибо.

PS. Пожалуйста, задавайте больше вопросов, если вам не понятно.

Может ли кто-нибудь объяснить разницу между for(i=0; i=0; i--) и когда мы их используем?

Заранее спасибо.

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