[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 234
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
немогу понять, как это воплотить в коде. а сам код готовый вам встречался где нибудь? Мне пожойдет вариант, если код будет расчитывать безубыток в трех напровлениях: 1. на все открытые ордера 2. только на ордера на покупку 3. только на ордера на продажу
Как рассчитать маржу (необходимых средств для открытия ордера лотом N) при различных значениях AccountFreeMarginMode
Здравствуйте!
Подскажите, если кто знает:
советник работает и в тестере и на реале при отклонении цены=2 пункта, а при рыночной цене, т.е. отклонение=0, могут быть проблемы или нет? Связь устойчивая - оптоволокно реально 60Мбит, если просто открываться вручную - исполнение обычно 1-2 секунды на реале. В советнике прописан повтор пока не будет успешно открыт ордер. Спрашиваю потому, что торговал в реале на платформе с четырьмя знаками, а хочу поставить с пятью знаками. Попробовал на пятизначной демке - ордер не открылся, сигнал высветился "...пробуем открыть ордер..." и все. В журнале никаких изменений или ошибок. Что подскажете ?
Сколько разумно и нужно ли ставить пунктов отклонения от рыночной цены при открытии(закрытии) ордеров из личного опыта ? А для торговли на пяти знаках надо что-то прописать в советнике, а то в тестере при открытии ордера предустановленные SL и TP уменьшаются ровно в десять раз - ровно на один знак после запятой ?
P.S. Советник для MQL4 написал сам.
С уважением.
Что-то сделал с редактируемым файлом <индикатор.mq4>, то ли переместил куда-то, то ли скопировал под другим именем, но после компиляции, в списке индикаторов терминала, название стало серым и неактивным.
Тем не менее, через боковое меню, в левой полосе окна, из "дерева списка" индикатор доступен и на график перетаскивается.
Если кто встречался с подобным, подскажите, как исправить ситуацию?
С уважением.
Что-то сделал с редактируемым файлом <индикатор.mq4>, то ли переместил куда-то, то ли скопировал под другим именем, но после компиляции, в списке индикаторов терминала, название стало серым и неактивным.
Тем не менее, через боковое меню, в левой полосе окна, из "дерева списка" индикатор доступен и на график перетаскивается.
Если кто встречался с подобным, подскажите, как исправить ситуацию?
Правой клавишей мыши кликаете на серый цвет индюка в терминале, далее в меню - "изменить" кликаете уже лев. мышью, далее в метаэдиторе компилите, далее перезагружаете терминал и радуетесь жизни...:-)
Правой клавишей мыши кликаете на серый цвет индюка в терминале, далее в меню - "изменить" кликаете уже лев. мышью, далее в метаэдиторе компилите, далее перезагружаете терминал и радуетесь жизни...:-)
Не поможет. Исходник-то потерян.
Я с советнегом со своим сегодня такую процедуру проделал - его цвет стал синий в терминале, был серый.
Я с советнегом со своим сегодня такую процедуру проделал - его цвет стал синий в терминале, был серый.
Помогите исправить ошибку в коде советника. Попытался написать советник на основе индикатора Laguerre.mq4. При компиляции выдает ошибку. Место ошибки в коде выделено жирным. Сам индикатор находится в теле советника.
//+------------------------------------------------------------------+
//| Laguerre+.mq4 |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//---- input parameters
extern int TrailingStop=0;
extern int StopLoss=0;
extern double lots=0.1;
extern double gamma = 0.7;
extern int Price_Type = 0;
//---- buffers
double Filter[];
double L0[];
double L1[];
double L2[];
double L3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(5);
//---- indicators
SetIndexStyle(0, DRAW_LINE);
SetIndexDrawBegin(0, 1);
SetIndexLabel(0, "LaguerreFilter");
SetIndexBuffer(0, Filter);
SetIndexBuffer(1, L0);
SetIndexBuffer(2, L1);
SetIndexBuffer(3, L2);
SetIndexBuffer(4, L3);
//----
string short_name="LaguerreFilter(" + DoubleToStr(gamma, 2) + ")";
IndicatorShortName(short_name);
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars = IndicatorCounted();
double CU, CD;
//---- last counted bar will be recounted
if (counted_bars>0)
counted_bars--;
else
counted_bars = 1;
limit = Bars - counted_bars;
//---- computations for RSI
for (int i=limit; i>=0; i--)
{
double Price=iMA(NULL,0,1,0,0,Price_Type,i);
L0[i] = (1.0 - gamma)*Price + gamma*L0[i+1];
L1[i] = -gamma*L0[i] + L0[i+1] + gamma*L1[i+1];
L2[i] = -gamma*L1[i] + L1[i+1] + gamma*L2[i+1];
L3[i] = -gamma*L2[i] + L2[i+1] + gamma*L3[i+1];
CU = 0;
CD = 0;
if (L0[i] >= L1[i])
CU = L0[i] - L1[i];
else
CD = L1[i] - L0[i];
if (L1[i] >= L2[i])
CU = CU + L1[i] - L2[i];
else
CD = CD + L2[i] - L1[i];
if (L2[i] >= L3[i])
CU = CU + L2[i] - L3[i];
else
CD = CD + L3[i] - L2[i];
if (CU + CD != 0)
Filter[i] = (L0[i] + 2 * L1[i] + 2 * L2[i] + L3[i]) / 6.0;
}
return(0);
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (OrdersTotal()>0)
{
CU = 0;
CD = 0;
{
OrderSelect(SELECT_BY_POS);
if (OrderSymbol()==Symbol())
{
if (OrderType()== OP_BUY)
{
if ((L0[i] >= L1[i])CU = L0[i] - L1[i],(L1[i] >= L2[i])CU = CU + L1[i] - L2[i],(L2[i] >= L3[i]),CU = CU + L2[i] - L3[i])
OrderClose(OrderTicket(),OrderLots());
else CU++;
}
if (OrderType()== OP_SELL)
{
if (CD = L1[i] - L0[i],CD = CD + L2[i] - L1[i],CD = CD + L3[i] - L2[i])
OrderClose(OrderTicket(),OrderLots());
else CD++;
}
}
}
if (CU > CD && CU == 0)
{
OrderSend(Symbol(),OP_BUY,lots,Ask,0/*(Ask-StopLoss*Point)*/,0,);
}
if (CU < CD && CD ==0)
{
OrderSend(Symbol(),OP_SELL,lots,Bid,,0/*(Bid+StopLoss*Point)*/,0,);
}
//----
return(0);
}
//+------------------------------------------------------------------+