Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте мастер кодер,
Я пытаюсь написать индикатор PPO_alt, график 1 на рисунках a и b, но он не строится корректно в режиме реального времени.
Поэтому я пытаюсь модифицировать оригинальный PPO (график 2), но он все еще не корректен. Пожалуйста, посмотрите и исправьте оба варианта.
Заранее спасибо.
PS. Пожалуйста, задавайте больше вопросов, если вам что-то непонятно.
Здравствуйте, мастер-кодер,
Я пытаюсь написать индикатор 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);
}
Почему вы делаете одно и то же в двух циклах?
О, я просто хочу построить линию с точками, чтобы ее было легко увидеть.
Важной линией является мультивысота, с которой у меня проблемы.
Спасибо за вопрос.
Алгоритм "Закрыть 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
}
}
}
}
Здравствуйте, Pro-Coders,
Мне интересно, не мог бы кто-нибудь просмотреть алгоритм "Close BUY" и "Close SELL".
Советник не открывает новую позицию после того, как произошел стоп-лосс или смена тренда.
Система просто закрывает позицию, следующая позиция будет открыта при новом изменении тренда, что приводит к потере возможности.
(Пожалуйста, смотрите скриншот).
Измените это:
for(int i=0;i<OrdersTotal(); i++)
на следующий
for(int i=OrdersTotal()-1;i>=0 ; i--)
Сообщите нам, что случилось. Возможно, это проблема конкретного билда metatrader (я использую билд 788).
шахта build 765
Pruchik предоставил эту версию здесь,
https://www.mql5.com/en/forum/173588
но нужен дополнительный скрипт для удаления линий индикатора Gann sq9, если он изменяется, оставляя линии на графике.
нужна помощь в решении этой проблемы с информацией о мониторе......
Здравствуйте Младен и все старшие кодеры
нужна помощь в решении проблемы с отображением информации......
не получается получить живую цитату, пожалуйста, помогите
//+------------------------------------------------------------------+
//| функция инициализации эксперта |
//+------------------------------------------------------------------+
#свойство 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);
Здравствуйте, мастер-кодер,
Я пытаюсь написать индикатор PPO_alt, график 1 на рисунках a и b, но он не строится правильно в режиме реального времени.
Поэтому я пытаюсь модифицировать сигнальный PPO (график 2), но он тоже не отображается корректно. Пожалуйста, посмотрите и исправьте оба варианта.
Заранее спасибо.
PS. Пожалуйста, задавайте больше вопросов, если вам не понятно.Может ли кто-нибудь объяснить разницу между for(i=0; i=0; i--) и когда мы их используем?
Заранее спасибо.