сделкам на графике,много пропусков,в чем может быть дело?
пытаюсь стрелки нарисовать по возможным - Помогите новичку! Как мне нарисовать стрелки?
- Игрушки от Vinin
- Помогите со стрелками в индикаторе
А не проще ли стрелки наносить через индикатор буфера?
int init() { //---- indicators SetIndexStyle(0,DRAW_ARROW, EMPTY, 3); SetIndexArrow(0,241); SetIndexBuffer(0,ExtMapBuffer1); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW, EMPTY, 3); SetIndexArrow(1,242); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(1,0.0); //---- return(0); }
нет непроще.... буферы индикатора в эксперте не работают, идея заключается в том чтобы записать в момент стрелки показания индикаторов в массив,гдето ошибка немогу найти... уже вот так пытаюсь неполучается всеравно...
#define __N 200 extern int Sloss = 60; extern int Tprofit = 120; int Buy[__N]; int Sell[__N]; extern int barn = 500; double stop_b =0, profit_b=0; double stop_s = 0, profit_s = 0; void Find_() { int _i,i,j=0,k=0; //if(!Optimize)return; for(i=0;i<barn;i+=5){//buy if(k<__N) { int Low_b = iLowest(NULL,0,MODE_LOW,i+10,i); int High_b = iHighest(NULL,0,MODE_HIGH,i+10,i); stop_b = (Close[i+10] - Close[Low_b])/Point; profit_b =(Close[High_b] - Close[i+10])/Point; if(stop_b < Sloss && profit_b >= Tprofit) { ObjectCreate("up"+i,OBJ_ARROW,0,Time[i+10],Close[i+10]); ObjectSet("up"+i,OBJPROP_ARROWCODE,225);//стрелка вверх Buy[k] = Data(i+10);k++; } } } for(_i=0;_i<barn;_i+=5){ if(j<__N) {//sell int Low_s = iLowest(NULL,0,MODE_LOW,_i+10,_i); int High_s = iHighest(NULL,0,MODE_HIGH,_i+10,_i); stop_s =(Close[High_s] - Close[_i+10])/Point; profit_s = (Close[_i+10] - Close[Low_s])/Point; if(stop_s < Sloss && profit_s >= Tprofit) { ObjectCreate("dw"+_i,OBJ_ARROW,0,Time[_i+10],Close[_i+10]); ObjectSet("dw"+_i,OBJPROP_ARROWCODE,226);//стрелка вниз Sell[j] = Data(_i+10);j++; } } } }
skywoker:
нет непроще.... буферы индикатора в эксперте не работают, идея заключается в том чтобы записать в момент стрелки показания индикаторов в массив,гдето ошибка немогу найти... уже вот так пытаюсь неполучается всеравно...
нет непроще.... буферы индикатора в эксперте не работают, идея заключается в том чтобы записать в момент стрелки показания индикаторов в массив,гдето ошибка немогу найти... уже вот так пытаюсь неполучается всеравно...
А функция start() есть?
да забыл дописать,там просто можно вызвать
void start()
{
Find_();
}
массивы Buy и Sell в циклах закоментировать...
void start()
{
Find_();
}
массивы Buy и Sell в циклах закоментировать...
skywoker:
да забыл дописать,там просто можно вызвать
void start()
{
Find_();
}
массивы Buy и Sell в циклах закоментировать...
да забыл дописать,там просто можно вызвать
void start()
{
Find_();
}
массивы Buy и Sell в циклах закоментировать...
Чему равно значение Buy [ k ] = Data ( i + 10 ) ; в этом выражении? Что возвращает функция Data().
там просто индикаторы это так пока для для пристрелки вот функция дата:
int Data(int off) { int sum = 0; HideTestIndicators(true); int _i; double tmp, result, _max; ////////////// for(_i = 0;_i<10;_i++){ tmp = iRSI(NULL,0,12,PRICE_CLOSE,_i+ off) ; tmp = (tmp -50)/100; tmp = MathCeil(1000*tmp)/1000; if(tmp>0.5) tmp=0.5; if(tmp<-0.5) tmp=-0.5; if(tmp == -0.5)sum--; if(tmp == 0.5) sum++; } ///////////// for(_i = 0;_i<10;_i++){ tmp = iCCI(Symbol(),0,12,PRICE_CLOSE,_i+off ); tmp = (tmp/300); tmp = MathCeil(1000*tmp)/1000; if(tmp>0.5) tmp=0.5; if(tmp<-0.5) tmp=-0.5; if(tmp == -0.5)sum--; if(tmp == 0.5) sum++; } ///////////// for(_i = 0;_i<10;_i++){ double ma_t = iMA(NULL,0,12,0,MODE_SMA,PRICE_CLOSE,_i+off); double ma_h = iMA(NULL,0,12,0,MODE_SMA,PRICE_CLOSE,_i+off+1); if(ma_t>ma_h)sum++; if(ma_t<ma_h)sum--; } return(sum); }
skywoker:
там просто индикаторы это так пока для для пристрелки вот функция дата:
Попробуй воспользоваться принтами в узких местах. С логикой разбираться неохота
там просто индикаторы это так пока для для пристрелки вот функция дата:
Не заморачиваясь писательством, использую приведенную ниже функцию. Для советника вместо i ставится номер бара, на котором ставится стрелка. Ни разу не подводила.
//----
//.....
string indicator_name = "Stochastic_signal";//любое имя, идентифицирующее объекты
//----
//+----------------------------------------------------------------------+
//| Void SetArrow пример вызова: SetArrow(Time[i],Low[i]- 5*Point,241,Blue);|
//+----------------------------------------------------------------------+
void SetArrow(datetime ArrowTime, double Price, double ArrowCode, color ArrowColor)
{
int err;
string ArrowName = indicator_name+DoubleToStr(ArrowTime,0);
if (ObjectFind(ArrowName) != -1) ObjectDelete(ArrowName);
if(!ObjectCreate(ArrowName, OBJ_ARROW, 0, ArrowTime, Price))
{
err=GetLastError();
Print("error: can't create Arrow! code #",err);
return;
}
else
{
ObjectSet(ArrowName, OBJPROP_ARROWCODE, ArrowCode);
ObjectSet(ArrowName, OBJPROP_COLOR , ArrowColor);
WindowRedraw();
}
}
//------------------------------------------------------------------------+
Спасибо большое но я в своей уже разобрался вчем дело ошибка была смешная вот работоспособный вареант...
extern int Sloss = 60; extern int Tprofit = 120; double stop_b =0, profit_b=0; double stop_s = 0, profit_s = 0; void Find_() { int _i,i,j=0,k=0; for(i=0;i<barn;i+=5){//buy stop_b =0; profit_b=0; int Low_b = iLowest(NULL,0,MODE_LOW,9,i); int High_b = iHighest(NULL,0,MODE_HIGH,9,i); stop_b = (Close[i+10] - Low[Low_b])/Point; profit_b =(High[High_b] - Close[i+10])/Point; if(Tprofit/2 < profit_b && stop_b < Sloss ) { ObjectCreate("Stop "+i,OBJ_ARROW,0,Time[Low_b],Low[Low_b]); ObjectSet("Stop "+i,OBJPROP_ARROWCODE,241); ObjectCreate("Profit "+i,OBJ_ARROW,0,Time[High_b],High[High_b]); ObjectSet("Profit "+i,OBJPROP_ARROWCODE,241); ObjectCreate("up"+i,OBJ_ARROW,0,Time[i+10],Close[i+10]); ObjectSet("up"+i,OBJPROP_ARROWCODE,225);//стрелка вверх } } for(_i=1;_i<barn;_i+=5){//sell stop_b =0; profit_b=0; int Low_s = iLowest(NULL,0,MODE_LOW,9,_i); int High_s = iHighest(NULL,0,MODE_HIGH,9,_i); stop_s =(High[High_s] - Close[_i+10])/Point; profit_s = (Close[_i+10] - Low[Low_s])/Point; if(Tprofit/2 < profit_s && stop_s < Sloss) { ObjectCreate("Stop "+_i,OBJ_ARROW,0,Time[High_s],High[High_s]); ObjectSet("Stop "+_i,OBJPROP_ARROWCODE,242); ObjectCreate("Profit "+_i,OBJ_ARROW,0,Time[Low_s],Low[Low_s]); ObjectSet("Profit "+_i,OBJPROP_ARROWCODE,242); ObjectCreate("dw"+_i,OBJ_ARROW,0,Time[_i+10],Close[_i+10]); ObjectSet("dw"+_i,OBJPROP_ARROWCODE,226);//стрелка вниз } } }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь