Скачать MetaTrader 5

как переделать SetIndexStyle в ObjectCreate

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Aleksandr
35
Aleksandr  

Помогите пожалуйста понять принцип как переделать

SetIndexStyle(0, DRAW_ARROW,0,0,Red);

в

ObjectCreate(example, OBJ_ARROW, 0, 0,0, 0,0);

keekkenen
1135
keekkenen  
ObjectCreate(name, OBJ_ARROW, 0, time, price);
ObjectSet(name, OBJPROP_ARROWCODE, arrIndex);
ObjectSet(name, OBJPROP_COLOR, col);
ObjectSet(name, OBJPROP_WIDTH, width);

Aleksandr
35
Aleksandr  

а вот если переделать например в этом коде

int init()
  {
   IndicatorBuffers(2);
//---- drawing settings
   SetIndexStyle(0,DRAW_SECTION);
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtMapBuffer);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(0,0.0);
//---- indicator short name
   IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");
//---- initialization done
   return(0);
  }
просто я так понимаю что создать объект вместо индекса нужно переделать не только одну строчкуи добавить параметры... Вопрос в том как уйти от SetIndexStyle к
ObjectCreate(name, OBJ_ARROW, 0, time, price);
ObjectSet(name, OBJPROP_ARROWCODE, arrIndex);
ObjectSet(name, OBJPROP_COLOR, col);
ObjectSet(name, OBJPROP_WIDTH, width);
если можете показать на примере индикатора в приложении.
Файлы:
zigzag.mq4 4 kb
keekkenen
1135
keekkenen  

то что в init это инициализация двух буферов ExtMapBuffer буфер для значений цен, по которым будет отрисовываться отрезки между не пустыми значениями DRAW_SECTION, второй ExtMapBuffer2 используется для расчетов и только..

а что хотите вы? чтоб вместо линий стрелки были или что?

Aleksandr
35
Aleksandr  
нет не чтобы вместо линий.. а чтоб на месте hight и low например были объекты например obj_arrow вот такой: SYMBOL_RIGHTPRICE (код 6)
Rustamzhan Salidzhanov
7691
Rustamzhan Salidzhanov  

Ну так и напишите : SetIndexStyle(0,DRAW_ARROW,6); можете еще размер добавить и цвет поменять....

Aleksandr
35
Aleksandr  
xrust писал(а) >>

Ну так и напишите : SetIndexStyle(0,DRAW_ARROW,6); можете еще размер добавить и цвет поменять....

дело в том что SYMBOL_RIGHTPRICE это прерагатива только objectcreate

Rustamzhan Salidzhanov
7691
Rustamzhan Salidzhanov  

Тогда почему бы вам не заглянуть вот Сюда ?

Aleksandr
35
Aleksandr  


Двойной Взгляд на Скользящую среднюю

давайте на более простом,

Если например переделать SetIndexStyle в скользящей средней по close (период 8) то будет такая картина,,, как добится такого результата? я и спрашиваю :) подмогите пожалуйста

Rustamzhan Salidzhanov
7691
Rustamzhan Salidzhanov  

Нет ничего проще :

//+------------------------------------------------------------------+
//|                                                  RIGHTPRICE .mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property indicator_chart_window
extern int  period=3;
extern int  shift =0;
extern int  metod =0;
extern int  prise =0;
extern int  bars  =20;
void init(){ObjectsDeleteAll();return;}
int start(){
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   if(limit>bars){limit=bars;}
   if(NevBar()){
   for (int i = 0;i<limit;i++){SetArrow(DoubleToStr(Time[i],1),6,1,i,iMA(Symbol(),0,period,shift,metod,prise,i),Green);}
   }
return;}
void deinit(){ObjectsDeleteAll();return;}
//-----------------------------------------------------------------------------+
// Функция контроля нового бара                                                |
//-----------------------------------------------------------------------------+
bool NevBar(){
   static int PrevTime=0;
   if (PrevTime==Time[0]) return(false);
   PrevTime=Time[0];
   return(true);} 
//+------------------------------------------------------------------+
//| Установка стрелок                                                |
//+------------------------------------------------------------------+
void SetArrow(string nm,int kod,int razm,int bar,double prs,color col){
//if(!DriveArrow)return;
string Name=StringConcatenate(nm,TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));
ObjectCreate(Name,OBJ_ARROW,0,0,0,0,0,0,0);
ObjectSet(Name,OBJPROP_ARROWCODE,kod);
ObjectSet(Name,OBJPROP_STYLE,DRAW_ARROW);
ObjectSet(Name,OBJPROP_TIME1,Time[bar]);
ObjectSet(Name,OBJPROP_PRICE1,prs);
ObjectSet(Name,OBJPROP_WIDTH,razm);
ObjectSet(Name,OBJPROP_COLOR,col);
return;} 
Aleksandr
35
Aleksandr  
Благодарю Вас,,, можно чтобы мне понять как такое сделать самому исходник то из чего вы переделали))
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий