Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Все еще пытаюсь добавить звуковое оповещение в этот индикатор...... Может ли кто-нибудь проверить код для меня, так как он не работает?
//|
//|
//+------------------------------------------------------------------+
#property copyright "niva"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 White
#property indicator_color2 Red
extern bool Email_Enabled = false;
extern bool Alert_Enabled = true;
//---- input parameters
int CountBars=10000;
//---- buffers
double uptrend[];
double downtrend[];
bool AlertSent,EmailSent;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicator line
IndicatorBuffers(2);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,217);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,218);
SetIndexBuffer(0,val1);
SetIndexBuffer(1,val2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2 |
//+------------------------------------------------------------------+
int start()
{
if (CountBars>=Bars) CountBars=Bars;
int i,shift,counted_bars=IndicatorCounted();
int uptrend, downtrend;
for (shift = CountBars; shift>=0; shift--)
{
if(High[shift-1]>High[shift]&&Low[shift-1]>Low[shift]&&uptrend!=3){
uptrend = uptrend+1;
downtrend=0;
}else if(High[shift-1]<High[shift]&&Low[shift-1]<Low[shift]&&downtrend!=3){
downtrend=downtrend+1;
uptrend=0;
}
else{
uptrend=0;
downtrend=0;
}
if (uptrend==3)
{
val1[shift]=Low[shift];
}
if (downtrend==3)
{
val2[shift]=High[shift];
}
}
return(0);
}
//----
if (Alert_Enabled && (uptrend[0] != 0 || uptrend[0] !=0) && !AlertSent)
{
Alert(Symbol() + "HiLow+3");
AlertSent=true;
}
if (Email_Enabled && (downtrend[0] != 0 || downtrend[0] !=0) && !EmailSent)
{
SendMail(Symbol() + "HiLow+3","HiLow+3 indicator triggered");
EmailSent=true;
}
if(downtrend[0] == 0 && uptrend[0] == 0 )
{
EmailSent=false;
AlertSent=false;
}
return(0);
}
//+------------------------------------------------------------------+Спасибо
Где-то в коде скобки не сбалансированы. Похоже, что где-то в коде пропущены } и ). Вам нужно посмотреть и посчитать, сколько открытых и закрытых скобок в коде (+1 для открытых и -1 для закрытых), это должно сказать вам, сколько скобок пропущено (скажем, +2 означает две правые скобки '}' или наоборот). Если он правильно расставил отступы, вы сможете понять, куда вставить правую скобку "}". Счастливой охоты
Мне удалось изменить некоторые настройки и, наконец, я думаю, что почти достиг цели! Теперь после следующей кодировки он говорит:
'shortSL' - переменная не определена
'longSL' - переменная не определена
Вот как это выглядит:
//+------------------------------------------------------------------+
//| Salgado.mq4 |
//| salgadoguilherme@hotmail.com|
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link "salgadoguilherme@hotmail.com"
extern bool trade=true;
extern int barstocount=50;
extern double lots=0.01;
extern int StopLoss =40;
extern int TakeProfit =10;
extern int slippage=3;
extern int magicnumber=816;
//+------------------------------------------------------------------+
//| функция инициализации эксперта |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| функция деинициализации эксперта | |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| функция запуска эксперта |
//+------------------------------------------------------------------+
int start()
{
//----
if(trade==true)
{
//M15
double M15_resistance=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,2,0);
double M15_resistance_p=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,2,barstocount-1);
double M15_line=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,0,0);
double M15_support=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,1,0);
double slopeM15=((M15_resistance-M15_resistance_p)/barstocount)/Point;
//Alert(DoubleToStr(slopeM15,2);
Comment(
"\n", "M15 Slope | ",slopeM15,
//КРАТКИЙ ВХОД
if(slopeM15<0 && IsTradeAllowed()==true)
{
bool shortopen=false;
int ord_cnt1=OrdersTotal();
for (int start1=0;start1<ord_cnt1;start1++)
{
OrderSelect(start1, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber()==magicnumber && OrderType()==OP_SELL)
{shortopen=true;}
}
if(shortopen==false)
{
double M15High=iHigh(Symbol(),PERIOD_M15,0);
if(M15High>=M15_resistance)
int shortticket=OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,Bid+shortSL,M15_line,DoubleToStr(slopeM15,2);
if(shortticket<0)
{
//ДЛИННЫЙ ВХОД
if(slopeM15>0 && IsTradeAllowed()==true)
{
bool longopen=false;
int ord_cnt=OrdersTotal();
for (int start=0;start<ord_cnt;start++)
{
OrderSelect(start, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber()==magicnumber && OrderType()==OP_BUY)
{ longopen=true; }
}
if(longopen==false)
{
double M15Low=iLow(Symbol(),PERIOD_M15,0);
if(M15Low<=M15_support)
int longticket=OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,Ask-longSL,M15_line,DoubleToStr(slopeM15,2);
if(longticket<0)
{
//----
return(0);
}
//+------------------------------------------------------------------+
Свеча типа "Инди
Здравствуйте,
Мне очень нужны учебники по MQL по кодированию индикаторов свечного типа, таких как на прикрепленном графике. Просто ссылки где-нибудь на этом форуме или за его пределами подойдут. Большое спасибо.
Piper.
Не мог бы кто-нибудь подсказать мне, как закодировать следующее;
Подсчитать количество баров с момента пересечения краткосрочной MA с долгосрочной MA.
Спасибо!
Код советника для возобновления торгов после закрытия.
Здравствуйте,
Есть ли пример кода для советника, который может возобновить управление сделками после остановки, а затем снова вернуться?
Спасибо,
JForex
Как кодировать?
Не мог бы кто-нибудь подсказать мне, как написать следующий код;
Подсчитайте количество баров с момента пересечения краткосрочной MA с долгосрочной MA.
Спасибо!Да!
Подсчитайте количество баров с момента их пересечения:
int i;
bool shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,0) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,0));
bool sgLast;
for(i=0;i<iBars(NULL,0);i++) {
sgLast = shortGreater;
shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,i) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,i));
if(shortGreater !== sgLast) {
break;
}
}
Переменная i будет содержать количество баров с момента их пересечения.
Не стесняйтесь прислать мне немного денег, если вы нашли это полезным. Буду благодарен.
Вот.
Мне удалось изменить некоторые настройки и, наконец, я считаю, что почти достиг цели! Теперь после следующей кодировки он говорит:
'shortSL' - переменная не определена
'longSL' - переменная не определена
Вот так. Я взял то, что вы сделали, и изменил это так, что оно скомпилировалось. Остерегайтесь, ваша логика плохая, кажется неполной, и, вероятно, она не сделает то, что вы хотите.
Но вот, пожалуйста.
- ChazzMoney
P.S. $170 - это очень дешево для программы. Я пишу инвестиционное программное обеспечение на заказ один или два раза в год за пятизначную сумму. Программисты, которые берутся за такую работу, должны остерегаться - вам нужно проверять КАЖДОЕ, чтобы убедиться, что вы не упустили случай. Ошибка так же хороша, как и случайный трейдер.
Не стесняйтесь прислать мне немного денег, если вы нашли это полезным. Я ценю ваши мысли.
код из стандартного ZigZag
Привет
этот код взят из стандартного "ZigZag.mq4"
"if (counted_bars==0 && downloadhistory) // история была загружена"
counted_bars==0 : проверка, если значение равно нулю, то все в порядке.
downloadhistory : нет проверки условия, почему??? пожалуйста, проясните это.
Спасибо.
Открытие 2 ордеров и закрытие 2 ордеров...ПОСТОЯННО.
Я долгое время пытался заставить советника всегда открывать два ордера на покупку или продажу. Один с TP, а другой без него. После открытия 2 ордеров больше не открывать до тех пор, пока не придет время торговать в противоположном направлении.
По какой-то причине я смотрю на историю счета и вижу 1 ордер, затем 3 ордера, затем 4 ордера, затем 2 ордера, и все это работает как мусор.
Может ли ЛЮБОЙ мастер кодирования здесь взглянуть и дать мне информацию?
Благодарю Вас!!!!!!!!!!!!!!!!
ОТКРЫТЫЕ ОРДЕРЫ
-------
BuyTicket1 = False;
BuyTicket2 = False;
while (!BuyTicket1) {
BuyTicket1 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, Ask + TakeProfit * Point, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
Sleep(PausebetweenOrders * 1000);}
//if (BuyTicket1 && SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open 1st Buy");
Sleep(1000);
while (!BuyTicket2) {
BuyTicket2 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, 0, "2nd Buy(#" + MagicNumber + ")", MagicNumber, 0, BlueViolet);
Sleep(PausebetweenOrders * 1000);}
------------
ЗАКРЫТЬ ОРДЕРЫ
------------
if(OrdersTotal() > 0) {
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
if(OrderType() == OP_SELL){
for (int j = OrdertotalCloseSell-1; j >= 0; j --) {
PositionClosedSell = False;
AttemptsTriedCloseSell = 0;
OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
while (!PositionClosedSell && AttemptsTriedCloseSell < CloseposnAttempts) {
AttemptsTriedCloseSell = AttemptsTriedCloseSell + 1;
OrderCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, MediumSeaGreen);
Sleep(PausebetweenOrders * 1000);
if( OrderCloseSell == True ) { // Позиция закрыта успешно.