Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Christoff
Таким образом, переменная Decimals должна быть в порядке
В любом случае, проверьте, какой код ошибки вы получаете в случае неудачного (частичного) закрытия ордераМладен,
Спасибо за подсказку.
Проблема в том, что нет сообщения об ошибке. Когда он не работает, кажется, что функция PartialTP даже не была вызвана. В других случаях - обычно при первых ордерах после перезапуска советника - она работает нормально.
Я подумал, что, возможно, одна из переменных не возвращается к нулевому значению, или что-то в этом роде, но я все еще не могу найти ошибку.
Младен,
Спасибо за подсказку.
Проблема в том, что нет сообщения об ошибке. Когда он не работает, кажется, что функция PartialTP даже не была вызвана. В других случаях - обычно на первых ордерах после перезапуска советника - она работает нормально.
Я подумал, что, возможно, одна из переменных не возвращается к нулевому значению, или что-то в этом роде, но я все еще не могу найти ошибку.chrisstoff
Извините, но с неполным кодом я не могу помочь больше.
То, что вы описываете, означает, что необходимо отладить код - а это можно сделать, только выполняя его с использованием каких-то контрольных точек.
chrisstoff
Извините, но с неполным кодом я не могу помочь больше.
То, что вы описываете, означает, что необходимо отладить код - а это можно сделать, только выполняя его с использованием каких-то контрольных точек.Спасибо, Младен.
Обнадеживает, что вы не увидели проблем в коде.
Я думаю, что все соответствующие части кода были опубликованы, так что мне придется искать ошибку в другом месте.
хок87
Пожалуйста, прочитайте сообщение над вашим сообщением для решения этой проблемы.
Полный код для этого следующий :
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
Malden,
Если я хочу открыть размер лота в процентах от баланса моего счета, как это закодировать?
Пример:
Баланс моего счета $500,
я хочу открыть лот размером 5%, затем он автоматически пересчитает и откроет лот $0.25, TP=10 SL=20.
Как это закодировать?
Спасибо.
Malden,
Если я хочу открыть размер лота в процентах от баланса моего счета, как это закодировать?
Пример:
Баланс моего счета $500,
я хочу открыть лот размером 5%, тогда он автоматически посчитает и откроет лот $0.25, TP=10 SL=20.
Как это закодировать?
Спасибо.Вы можете использовать для этого функцию, подобную этой:
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
PS: stopLoss должен быть передан в функцию уже в пунктах/пунктах (не в целых значениях).
Вы можете использовать для этого функцию, подобную этой:
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
Спасибо, Младен.
Но у меня не получается соединить код с кодом ордера на покупку.
Появляется много ошибок и предупреждений.
Как это исправить?
Спасибо.
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}Спасибо, Младен.
Но у меня не получается соединить код с кодом ордера на покупку.
Появляется много ошибок и предупреждений.
Как это исправить?
Спасибо.
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}Попробуйте так (я проверил это сейчас и это работает):
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int init() { return(0); }
int deinit() { return(0); }
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point*MathPow(10,Digits%2));
prof=(Ask+profsize*Point*MathPow(10,Digits%2));
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}уважаемые mladen и mr. tools, пожалуйста,
возможно ли создать ea, которая дает сигнал на основе определенных условий, например, сигналы 3 или 4 индикаторов, удовлетворяющих заданным условиям.
например
Я хочу, чтобы ea подавала сигнал на покупку:
ema 8 пересекает ema 21
qqe выше 0
не запаздывающая ma зеленая
и свеча находится выше облака ишимоку.
советник не должен открывать сделки, а только подавать сигнал при выполнении указанных условий
Спасибо, Младен.
Я попробовал.
но он все равно открывает лоты с $0.1.
Я хочуоткрывать лоты в размере процента от баланса моего счета.
Например: баланс счета $500.
открываем лот размером 5%, затем он автоматически пересчитывает и открывает лоты по $0.25, TP=10 SL=20.
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = $500*(5%/100)
LotSizeSlot1 = $ 0.25
Затем он автоматически открывает лоты по $0.25 и TP=10 SL=20.
Как это создать?
Спасибо.
Спасибо, Младен.
Я пробовал.
но он все равно открывает лоты с $0.1.
Я хочу открытьлот в размере процента от баланса моего счета.
Например: баланс счета $500.
открываю лот размером 5%, затем он автоматически пересчитывает и открывает лоты по $0.25, TP=10 SL=20.
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = $500*(5%/100)
LotSizeSlot1 = $ 0.25
Затем он автоматически открывает лоты по $0.25 и TP=10 SL=20.
Как это создать?
Спасибо.Как в приложенном примере.