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

 
Tomcat98:
Привет, Младен,

Вот что говорит цикл для тех отложенных ордеров, где Multi_Indic_00 - осциллятор, а Up_Prime_00 - уровень определения.

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

//---- Проверить и закрыть, если тип ордера лимитный и тренд изменился.

if(OrderType()==OP_BUYLIMIT)

if((( Multi_Indic_00 ) <= (Up_Prime_00 ))

{

_OrderDelete=OrderDelete(OrderTicket());

}

if(OrderType()==OP_SELLLIMIT)

if((( Multi_Indic_00 ) >= ( Down_Prime_00 ))

{

_OrderDelete=OrderDelete(OrderTicket());

}

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

Ну ничего особенного....

Счастливой торговли.

Искренне.

Tomcat98

Tomcat98

Что я хотел бы увидеть, так это оператор цикла for(). Если у вас есть оператор for, подобный этому :

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

то некоторые заказы будут пропущены, если за это время некоторые заказы были закрыты или удалены. С другой стороны, если цикл for() будет выглядеть следующим образом:

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

тогда он обработает все заказы.

 

Младен

Понятно:

Вот он для процесса закрытия:

"

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

{

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

if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue;

"

Tomcat98

 
Tomcat98:
Mladen

Понятно:

Вот она для процесса закрытия:

"

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

{

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

if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue;

"

Tomcat98

Tomcat98

Измените цикл на

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

и все должно быть в порядке

 

Младен,

Бинго!

Теперь он делает именно то, что мне нужно.

Большое спасибо за вашу помощь.

"Людям не важно, сколько вы знаете, пока они не узнают, насколько вам не все равно".

- Теодор Рузвельт

Искренне.

Tomcat98

 
Tomcat98:
Младен,

Бинго!

Теперь он делает именно то, что мне нужно.

Большое спасибо за вашу помощь.

"Людям не важно, сколько вы знаете, пока они не узнают, насколько вам не все равно".

- Теодор Рузвельт

Искренне.

Tomcat98

Счастливого кодирования

 

Привет Младен, спасибо за все, теперь все работает хорошо...

Теперь я застрял с созданным индикатором, который не перезагружается, поэтому каждый раз, когда свеча закрывается, мне приходится перезагружать индикатор, не могли бы вы помочь мне исправить это? Вот часть кода (это трендовый индикатор, основанный на простой идее гэпов, спасибо:

#property copyright "Copyright © 2014 Daniel Luchinger"

#property link

#property strict

#property strict

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 clrLime

#property indicator_color2 clrRed

#property indicator_color3 clrMagenta

#property indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[];

int OnInit() {

SetIndexBuffer(0,FirstBuy);

SetIndexBuffer(1,FirstSell);

SetIndexBuffer(2,Buy);

SetIndexBuffer(3,Sell);

for(int i=0; i<4; i++) {

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233);

SetIndexArrow (1,234);

SetIndexArrow (2,233);

SetIndexArrow (3,234);

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0;

for(int i=MathMin(rates_total-prev_calculated, rates_total-1); i>=0; i--) {

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;

datetime when=Time;

if((High-Close)<0) {

if(lastSignal==SELL) {

FirstBuy=Close;

SoundAlert(when, "Buy");}

lastSignal=BUY;}

if((Low-Close)>0){

if(lastSignal==BUY) {

FirstSell=Close;

SoundAlert(when, "Sell");}

lastSignal=SELL;}

}

return(rates_total);}

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0;

if(lastAlert!=i) {

Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i)));

 
daniel1983:
Привет Младен, спасибо за все, теперь все работает хорошо...

теперь я застрял с созданным индикатором, который не перезагружается, поэтому каждый раз, когда свеча закрывается, мне приходится перезагружать индикатор, не могли бы вы помочь мне исправить это? Вот часть кода (это трендовый индикатор, основанный на простой идее гэпов, спасибо:

#property copyright "Copyright © 2014 Daniel Luchinger"

#property link

#property strict

#property strict

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 clrLime

#property indicator_color2 clrRed

#property indicator_color3 clrMagenta

#property indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[];

int OnInit() {

SetIndexBuffer(0,FirstBuy);

SetIndexBuffer(1,FirstSell);

SetIndexBuffer(2,Buy);

SetIndexBuffer(3,Sell);

for(int i=0; i<4; i++) {

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233);

SetIndexArrow (1,234);

SetIndexArrow (2,233);

SetIndexArrow (3,234);

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0;

for(int i=MathMin(rates_total-prev_calculated, rates_total-1); i>=0; i--) {

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;

datetime when=Time;

if((High-Close)<0) {

if(lastSignal==SELL) {

FirstBuy=Close;

SoundAlert(when, "Buy");}

lastSignal=BUY;}

if((Low-Close)>0){

if(lastSignal==BUY) {

FirstSell=Close;

SoundAlert(when, "Sell");}

lastSignal=SELL;}

}

return(rates_total);}

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0;

if(lastAlert!=i) {

Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i)));

daniel1983

Попробуйте вот так:

#property copyright "Copyright © 2014 Daniel Luchinger"

#property link ""

#property strict

#property strict

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 clrLime

#property indicator_color2 clrRed

#property indicator_color3 clrMagenta

#property indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[];

int OnInit() {

SetIndexBuffer(0,FirstBuy);

SetIndexBuffer(1,FirstSell);

SetIndexBuffer(2,Buy);

SetIndexBuffer(3,Sell);

for(int i=0; i<4; i++) {

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233);

SetIndexArrow (1,234);

SetIndexArrow (2,233);

SetIndexArrow (3,234);

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0;

for(int i=MathMin(rates_total-prev_calculated, rates_total-2); i>=0; i--)

{

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;

datetime when=Time;

if((High-Close)<0) {

if(lastSignal==SELL) {

FirstBuy=Close;

SoundAlert(when,"Buy");}

lastSignal=BUY;}

if((Low-Close)>0){

if(lastSignal==BUY) {

FirstSell=Close;

SoundAlert(when,"Sell");}

lastSignal=SELL;}

}

return(rates_total);

}

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0;

if(lastAlert!=i) {

Alert(StringFormat("%s signal on %s at %s",dir,Symbol(),TimeToStr(i)));

}

}

 

Привет Младен, спасибо, но если написать код таким образом, то будут отсутствовать сигналы, пожалуйста, посмотрите, я сделал картинку, сравнивая их на дневном графике USDJPY:

Что это может быть?

Файлы:
 
daniel1983:
Привет Mladen, спасибо, но написав код таким образом, есть недостающие сигналы, пожалуйста, посмотрите, я сделал картинку, сравнивая их на дневном графике USDJPY:

Что это может быть?

daniel1983

В своем коде вы использовали будущие значения (эти :

High-Close

Low-Close

Я использовал Close - которое является обычным предыдущим значением. Измените его на но тогда оно будет перерисовываться

 

Уважаемые mrtools и mladen

Может ли кто-нибудь помочь? Tom Demark Moving Average является ключевым индикатором в моей стратегии, однако, сигнал тревоги был бы очень полезен, когда указывается новая полка; я был бы очень признателен, если бы сигнал тревоги был закодирован в индикаторе. С нетерпением жду вашей любезной помощи.

Большое спасибо

Файлы:
Причина обращения: