Как кодировать? - страница 43

 
jimven:
Flytox: Я не могу найти такой код в моей копии TrendStrength.

Это TrendStrength v2.2

 

Пользовательский режим ценообразования

Кто-нибудь знает, как сделать пользовательский ценовой режим? Я использую следующее оповещение, чтобы сигнализировать, когда цена (extern int PriceMode = 6; //(high+low+close+close)/4) пересекает MA. Я хотел бы сделать его индивидуальным, добавив смещение, скажем, на 1 или 2 %. Возможно ли это? Что-то вроде:

extern int PriceMode = ((high+low+close+close)/4) * 1.01

----------------------------------------------------

#property indicator_chart_window

extern int MA1.period =5; //Период 5

extern int MA1.shift=0;

extern int MA1.method=2; //SMMA

extern int lMA1.price=2; //MA устанавливается на максимум свечи

extern int sMA1.price=3; //MA устанавливается на низкую свечу

extern int PriceMode = 6; //(high+low+close+close)/4

int cBar,pBarLong,pBarShort;

int start()

{

cBar = Time[0];

if(CheckMACross(1)== 1 && cBar!=pBarLong ) {EmailAlert(1); pBarLong=cBar;}

else

if(CheckMACross(2)==-1 && cBar!=pBarShort) {EmailAlert(2); pBarShort=cBar;}

return(0);

}

int CheckMACross(int mode)

{

if(mode==1) int price = lMA1.price;

else

if(mode==2) price = sMA1.price;

double price1 = iMA(Symbol(),0,1,0,1,PriceMode,1);

double ma1 = iMA(Symbol(),0,MA1.period,MA1.shift,MA1.method, price,1);

double price0 = iMA(Symbol(),0,1,0,1,PriceMode,0);

double ma0 = iMA(Symbol(),0,MA1.period,MA1.shift,MA1.method, price,0);

if(ma1 > price1 && ma0 <= price0) return( 1);

иначе

if(ma1 = price0) return(-1);

else

return(0);

}

{

if(mode == 1) SendMail("Signal for LONG",Symbol()+" Go Long"); //SendMail

else

if(mode == 2) SendMail("Signal for SHORT",Symbol()+" Go Short");//SendMail

}

int lastBAlert = 0;

int lastSAlert = 0;

void EmailAlert(int mode)

{

if(mode == 2 && lastSAlert < Time[0] )

{

SendMail("Go Short 1",Symbol()+" Go Short 1"); //SendMail

lastSAlert = Time[0];

}

}

 
vonokpasah:
Я обращаюсь к экспертам, пожалуйста, придите мне на помощь, мне нужно, чтобы некоторые из них помогли мне создать EXPERT ADVISER META 4 TRADER для меня, я буду очень рад, если моя просьба будет удовлетворена.

Миллионы способов создать эксперта, о каком способе вы подумали?

 

помощь с исходным кодом!

Привет всем

У меня есть советник и я хочу добавить в него вход

Если тейк-профит >= :xx, купить лот :xx

extern int Deltaopen1 =100;

Я написал;

if (type == OP_BUY)

{

if (M2.BuyCnt == 0 && OrderTakeProfit() > OrderOpenPrice() + Deltaopen1*point)

{

Buy(Symbol(), GetLots2(), Ask, 0, 0, 0, Magic2);

return;

}

}

if (type == OP_SELL)

{

if (M2.SellCnt == 0 && OrderTakeProfit() <= OrderOpenPrice() - Deltaopen1*point)

{

Sell(Symbol(), GetLots2(), Bid, 0, 0, 0, Magic2);

return;

}

}

}

Но это не работает,

буду благодарен за любую помощь.

Спасибо

 

Нужна помощь в доработке советника

У меня есть этот советник, который является модифицированной версией "GAPS EA", найденной в другом месте на этом форуме.

В любом случае, прилагается копия кода.

#property link ""

//---- input parameters

extern int min_gapsize = 1;

extern double lotsize_gap = 5;

extern int MagicNumber = 10;

//----

datetime order_time = 0;

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

//| expert initialization function |

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

int init()

{

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

return(0);

}

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

//| expert start function |

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

int start()

{

/*

Thing to be done in future in this program to make it more efficient

and more powerful:

1. Make the dicission of the quantity of lots used according to

the scillators;

2. This program will catch the gaps.

Things to ware of:

1. the spread;

2. excuting the order not on the gap ends a little bit less.

*/

// Defining the variables to decide.

Print("order time", order_time);

double current_openprice = iOpen(Symbol(), 0, 0);

double previous_highprice = iHigh(Symbol(), 0, 1);

double previous_lowprice = iLow(Symbol(), 0, 1);

double point_gap = MarketInfo(Symbol(), MODE_POINT);

int spread_gap = MarketInfo(Symbol(), MODE_SPREAD)+1;

datetime current_time = iTime(Symbol(), 0, 0);

// catching the gap on sell upper gap

if(current_openprice > previous_highprice + (min_gapsize + spread_gap)*point_gap &&

current_time != order_time)

{

int ticket = OrderSend(Symbol(), OP_SELL, lotsize_gap, Bid, 0, 0,

previous_highprice + spread_gap,

"Gapped Up Sell " + Symbol()+ " " +Period()+ "", MagicNumber, 0, Red);

order_time = iTime(Symbol(), 0, 0);

Print("I am inside (sell) :-)", order_time);

//----

if(ticket < 0)

{

Print("OrderSend failed with error #", GetLastError());

}

}

//catching the gap on buy down gap

if(current_openprice < previous_lowprice - (min_gapsize + spread_gap)*point_gap &&

current_time != order_time)

{

ticket = OrderSend(Symbol(), OP_BUY, lotsize_gap, Ask, 0, 0,

previous_lowprice - spread_gap,

"Gapped Down Buy " + Symbol()+ " " +Period()+ "", MagicNumber, 0, Green);

order_time = iTime(Symbol(), 0, 0);

Print("I am inside (buy) :-)", order_time);

if(ticket < 0)

{

Print("OrderSend failed with error #", GetLastError());

}

}

//----

return(0);

}

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

Всякий раз, когда я ввожу его в тестер стратегий, он не открывает сделки. Быстрый взгляд на журнал говорит мне, что было сделано много ордеров. Что я сделал не так?

 

Помогите: Базовый вопрос по гистограмме

Возможно, это очень просто и я что-то упускаю, но у меня закончились ресурсы и я не могу найти ответ.

Все, что я пытаюсь сделать, это вспомнить значение ранее нарисованной полосы гистограммы.

Есть идеи?

Т.е. Close[1] показывает последний закрытый бар на графике......

Что же будет показывать последний нарисованный бар гистограммы на этом индикаторе в отдельном окне?

Заранее спасибо за любой совет.

-dharsant

 
dharsant:
Возможно, это действительно просто и я что-то упускаю, но у меня закончились ресурсы и я не могу найти ответ.

Все, что я пытаюсь сделать, это вызвать значение ранее нарисованной полосы гистограммы.

Есть идеи?

Т.е. Close[1] показывает последний закрытый бар на графике......

Что же будет показывать последний нарисованный бар гистограммы в этом отдельном окне индикатора?

Заранее спасибо за любой совет.

-dharsant

Какой индикатор вы вызываете? Просто установите сдвиг для вызова предыдущего бара.

Пример, для скользящей средней на текущем баре:

iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,0);

Для скользящей средней предыдущего бара:

iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,1);

Последний параметр при вызове индикатора указывает, сколько баров от текущего будет считано.

Надеюсь, это то, что вы искали.

 

Нужна помощь в кодировании, пожалуйста

Я пытаюсь использовать пару различных индикаторов в ea, но не могу понять, как внедрить их в систему. Какую часть индикатора я должен использовать, чтобы сказать, покупать или продавать. Как сделать так, чтобы линия направления наклона стала частью советника.

Спасибо

Бено

Файлы:
 

Возможно, я не совсем правильно объяснил.

Я пытаюсь выяснить, что мне нужно поместить в iCustom, вот что я сделал ниже.

double SDL=iCustom(NULL,0, "Slope Direction Line",period,method,price)

И что мне нужно сделать, чтобы генерировать сигналы на покупку и продажу от индикатора Slope Direction Line для моего эксперта. Ниже то, что я сделал на данный момент, он компилируется, но позиции не генерируются.

bool Long = TML && SDL && HeikenAshiOpen < HeikenAshiClose && hasOpen < hasClose;

bool Short = TMS && SDL && HeikenAshiOpen > HeikenAshiClose && hasOpen > hasClose;

Любая помощь будет замечательной

Спасибо

Бено

 

Во-первых, вызов iCustom требует двух дополнительных аргументов в конце, а именно: из какого из индикаторных буферов читать, и по какому индексу читать.

Во-вторых, "SDL" - это двойное число, поэтому простое указание "SDL" в качестве условия показывает некоторую путаницу; возможно, оно компилируется как "SDL != 0", и, возможно, именно это и имеется в виду.

Причина обращения: