Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
...
Вы должны сделать две вещиПосле этого вы получите что-то вроде этого:
Хороших выходных
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_maximum 100
#property indicator_level1 70
#property indicator_level2 50
#property indicator_level3 30
#property indicator_minimum 0
//---- входные параметры
extern int rsiperiod = 14 ;
extern int Shortperiod = 5 ;
extern int Middleperiod = 8;
extern int Longperiod = 13;
extern int mamode = 2 ;
//---- буферы
double RSI[];
double ShortRSI[];
double MiddleRSI[];
double LongRSI[];
double SMRSI[];
int period ;
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
int init()
{
//---- индикаторы
IndicatorBuffers(5);
SetIndexBuffer(0,SMRSI);
SetIndexBuffer(1,RSI);
SetIndexBuffer(2,ShortRSI);
SetIndexBuffer(3,MiddleRSI);
SetIndexBuffer(4,LongRSI);
//---- имя для DataWindow и метки подокна индикатора
IndicatorShortName("SMRSI("+rsiperiod+", "+Shortperiod+", "+Middleperiod+", "+Longperiod+", "+mamode+")");
SetIndexDrawBegin(0,rsiperiod+Longperiod);
period=Shortperiod+Middleperiod+Longperiod;
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = Bars-counted_bars;
for( i=limit; i>=0; i--) RSI=iRSI(NULL,0,rsiperiod,0,i);
for( i=limit; i>=0; i--) ShortRSI=iMAOnArray(RSI,0,Shortperiod,0,mamode,i);
for( i=limit; i>=0; i--) MiddleRSI=iMAOnArray(RSI,0,Middleperiod,0,mamode,i);
for( i=limit; i>=0; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i);
for( i=limit; i>=0; i--) { if(period!=0) SMRSI=(Shortperiod/period)*ShortRSI+(Middleperiod/period)*MiddleRSI+(Longperiod/period)*LongRSI;}
return(0);
}
//+------------------------------------------------------------------+n_n
Вы должны сделать 2 вещи .
После этого вы получите что-то вроде этого:
Хороших выходныхСпасибо!
Здравствуйте,
Я скачал индикатор, прикрепленный на сайте mql4. Я пытаюсь сделать советника на основе этого индикатора, но когда я запускаю бэктест, через несколько секунд платформа падает, и я думаю, что это ошибка индикатора, потому что он использует много процессора.
Поэтому я спрашиваю, возможно ли облегчить код, чтобы решить эту проблему.
Спасибо за вашу отзывчивость.
cronex_taichi.mq4
dasio
Я протестировал его с этим фрагментом, и он работает нормально. Я не знаю, какие параметры вы использовали, так что это просто вызов индикатора по умолчанию, но в этом случае проблем нет.
{
return(0);
}
int start()
{
Comment(iCustom(NULL,0,"Cronex Taichi",0,0));
return(0);
}
Привет,
Я скачал индикатор, прикрепленный на сайте mql4. Я пытаюсь сделать советника на основе этого индикатора, но когда я запускаю бэктест, через несколько секунд платформа падает, и я думаю, что это ошибка индикатора, потому что он использует много процессора.
Поэтому я спрашиваю, возможно ли облегчить код, чтобы решить эту проблему.
Спасибо за вашу отзывчивость.
cronex_taichi.mq4dasio
Я протестировал его с помощью этого фрагмента, и он работает нормально. Я не знаю, какие параметры вы использовали, так что это просто вызов индикатора по умолчанию, но в этом случае проблем нет.
{
return(0);
}
int start()
{
Comment(iCustom(NULL,0,"Cronex Taichi",0,0));
return(0);
}
Спасибо, за ваш ответ,
Я вижу, что в истории индикатор загружался неоднократно, поэтому я перемещаю код icustom только в событие новой свечи, но проблема все еще сохраняется.
Я не знаю почему.
Тем не менее, спасибо за вашу отзывчивость.
Привет,
Я нашел проблему. Теперь все в порядке.
У меня другая проблема с другим ea.
У меня есть два кода, и функция Lotti() должна возвращать мне количество лотов для ордеров.
Когда я компилирую его, я получаю Posizioni Internal Error. Что случилось? Спасибо;
{
int intCount=0;
int intPOS=0;
bool boolTerm=false;
while(boolTerm==false)
{
if(OrderSelect(intPOS,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
intPOS++;
}
else
boolTerm=true;
}
return(intCount);
}
[/PHP]
[PHP]int Lotti(){
int Lotti;
int Posizioni=OTBM(MagicNumber);
switch (Posizioni)
{
case 0 : Lotti=0.1; break;
case 1 : Lotti=0.2; break;
case 2 : Lotti=0.4; break;
case 3 : Lotti=0.8; break;
case 4 : Lotti=1.6; break;
case 5 : Lotti=3.2; break;
case 6 : Lotti=6.4; break;
case 7 : Lotti=12.8; break;
}
return(Lotti);
}Попробуйте заменить OTBM() на это :
{
int intCount=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
}
}
return(intCount);
}
[/PHP]
Hi,
i found the problem. Now all its ok.
I have another problem with another ea.
I have this two code and the function Lotti() would be return me the number of lot for an ordersend.
When i compile it i receive Posizioni Internal Error. What's wrong? Thank you;
{
int intCount=0;
int intPOS=0;
bool boolTerm=false;
while(boolTerm==false)
{
if(OrderSelect(intPOS,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
intPOS++;
}
else
boolTerm=true;
}
return(intCount);
}
[PHP]int Lotti(){
int Lotti;
int Posizioni=OTBM(MagicNumber);
switch (Posizioni)
{
case 0 : Lotti=0.1; break;
case 1 : Lotti=0.2; break;
case 2 : Lotti=0.4; break;
case 3 : Lotti=0.8; break;
case 4 : Lotti=1.6; break;
case 5 : Lotti=3.2; break;
case 6 : Lotti=6.4; break;
case 7 : Lotti=12.8; break;
}
return(Lotti);
}Привет, -.-"
Я не нахожу покоя с этими кодами, эхехехе.
У меня проблема с функцией, которая должна вывести мне прибыль всех открытых ордеров, но я думаю, что она не работает, потому что условие никогда не соблюдалось. Ниже код:
if(Profit()>=0.....[/PHP]
[PHP]double Profit()
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}dasio
Попробуйте так :
if(Profit()>=0.....[/PHP]
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total-1; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}[/PHP]
Hi, -.-"
I do not find peace with these codes eheheh.
I have a problem with a function that have to result me the profit of all openorder but i think it's not work because the condition never been respected. Below the code:
[PHP].....
if(Profit()>=0.....[PHP]double Profit()
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}dasio
Попробуйте вот так:
if(Profit()>=0.....[/PHP]
[PHP]double Profit()
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total-1; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}Таким образом я проверяю ордера, которые не открыты с указанным магическим номером, правильно? Мне нужно проверить ордер с определенным символом и магическим номером. Не знаю, важно ли это, но я нашел ошибку в тестере стратегий.