Поместите что-то вроде этого в начало процедуры start() вашего советника, и это предотвратит его работу, если убыток (или прибыль), уже полученный в этот день, превысит некоторую сумму:
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
Просто для проверки..... будет ли этот код предотвращать любые другие ордера от определенной валютной пары и MagicNumber.... если сегодняшний ACCUMULATED LOSS превышает someProfitLossLimit....
Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....
Thanks for the very-very fast reply....
best regrads
AZRUL...
Да
Это предотвратит дальнейшую обработку кода, если накопленная прибыль закрытых ордеров меньше некоторой суммы. Вы можете заменить последнюю строку на эту :
Это предотвратит дальнейшую обработку кода, если накопленная прибыль закрытых ордеров меньше некоторой суммы. Вы можете заменить последнюю строку на следующую:
if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);
Чтобы убедиться, что это делается только в тех случаях, когда суммарная "прибыль" отрицательна (когда были проигрыши)
Dear Sir MLADEN...
So Sorry Sir... Я думаю, что я не достаточно ясно объяснил для вас......
Мое намерение состоит в том, что код для отслеживания накопленного убытка только для конкретной валютной пары и MagicNumber..... Не включая прибыль, которую он приносит... только убытки считаются...
Простите, сэр... Я думаю, что я не достаточно ясно объяснил для вас.....
Мое намерение состоит в том, что код для отслеживания накопленного убытка только для конкретной валютной пары и MagicNumber..... Не включая прибыль, которую он приносит... только убытки считаются...
ИЗВИНИТЕ ЗА ПУТАНИЦУ...
С наилучшими пожеланиями...
АЗРУЛ...
AZRUL
Прибыль может быть отрицательной (==убыток) В закрытом списке otrders есть файл Order() profit, который сохраняет "прибыль": положительную для выигрышных ордеров и отрицательную для проигрышных сделок. Этот код делает именно то, что вам нужно
Теория заключается в следующем.... если сегодня случится так, что рынок будет SIDEWAY, я в конечном итоге потеряю часть прибыли (если таковая имеется), которая была сделана и X$ РИСК на мой капитал..... Это не защита от очень плохого торгового дня......
Причина в том, что я готов рисковать на X$ в день от сегодняшней торговли.....
Вышеуказанные коды съедят всю прибыль (если таковая имеется) за день, плюс это также съест мой РИСК (капитал)...
mladen: AZRUL Прибыль может быть отрицательной (==убыток) В закрытом списке otrders есть файл Order() profit, который сохраняет "прибыль": положительную для выигрышных ордеров и отрицательную для проигрышных сделок. Этот код делает именно то, что вам нужно
Уважаемый господин МЛАДЕН...
Спасибо, что просветили меня по поводу вышеупомянутого предложения...
Следить за накопленным убытком только для конкретной валютной пары и MagicNumber..... Не включая прибыль, которую он приносит... Считается только убыток...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
Следить за накопленным убытком только для конкретной валютной пары и MagicNumber..... Не включая прибыль, которую он получает... Считается только убыток...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
Это просто:
Поместите что-то вроде этого в начало процедуры start() вашего советника, и это предотвратит его работу, если убыток (или прибыль), уже полученный в этот день, превысит некоторую сумму:
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]Уважаемый господин MLADEN....
Большое спасибо за вышеуказанные коды.... IOU 2 кредита.....
[PHP]
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
Просто для проверки..... будет ли этот код предотвращать любые другие ордера от определенной валютной пары и MagicNumber.... если сегодняшний ACCUMULATED LOSS превышает someProfitLossLimit....
Спасибо за очень-очень быстрый ответ....
наилучшие пожелания
AZRUL...
Уважаемый господин MLADEN....
СПАСИБО БОЛЬШОЕ за вышеуказанные коды.... IOU 2 кредита.....
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]
Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....
Thanks for the very-very fast reply....
best regrads
AZRUL...Да
Это предотвратит дальнейшую обработку кода, если накопленная прибыль закрытых ордеров меньше некоторой суммы. Вы можете заменить последнюю строку на эту :
[PHP]if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);Чтобы убедиться, что это делается только в тех случаях, когда накопленная "прибыль" отрицательна (когда были убытки)
Да
Это предотвратит дальнейшую обработку кода, если накопленная прибыль закрытых ордеров меньше некоторой суммы. Вы можете заменить последнюю строку на следующую:
Dear Sir MLADEN...
So Sorry Sir... Я думаю, что я не достаточно ясно объяснил для вас......
Мое намерение состоит в том, что код для отслеживания накопленного убытка только для конкретной валютной пары и MagicNumber..... Не включая прибыль, которую он приносит... только убытки считаются...
ИЗВИНИТЕ ЗА ПУТАНИЦУ...
С наилучшими пожеланиями...
AZRUL...
Уважаемый сэр MLADEN...
Простите, сэр... Я думаю, что я не достаточно ясно объяснил для вас.....
Мое намерение состоит в том, что код для отслеживания накопленного убытка только для конкретной валютной пары и MagicNumber..... Не включая прибыль, которую он приносит... только убытки считаются...
ИЗВИНИТЕ ЗА ПУТАНИЦУ...
С наилучшими пожеланиями...
АЗРУЛ...AZRUL
Прибыль может быть отрицательной (==убыток)
В закрытом списке otrders есть файл Order() profit, который сохраняет "прибыль": положительную для выигрышных ордеров и отрицательную для проигрышных сделок. Этот код делает именно то, что вам нужно
Уважаемый господин МЛАДЕН,
Теория заключается в следующем.... если сегодня случится так, что рынок будет SIDEWAY, я в конечном итоге потеряю часть прибыли (если таковая имеется), которая была сделана и X$ РИСК на мой капитал..... Это не защита от очень плохого торгового дня......
Причина в том, что я готов рисковать на X$ в день от сегодняшней торговли.....
Вышеуказанные коды съедят всю прибыль (если таковая имеется) за день, плюс это также съест мой РИСК (капитал)...
СПАСИБО
С наилучшими пожеланиями...
AZRUL...
AZRUL Прибыль может быть отрицательной (==убыток)
Уважаемый господин МЛАДЕН...
Спасибо, что просветили меня по поводу вышеупомянутого предложения...
Я постараюсь найти любой результат.....
с наилучшими пожеланиями
AZRUL...
Уважаемый господин МЛАДЕН,
Подойдут ли следующие коды...
Следить за накопленным убытком только для конкретной валютной пары и MagicNumber..... Не включая прибыль, которую он приносит... Считается только убыток...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Ваши знания будут высоко оценены...
искренне ваш
AZRUL....
Уважаемый господин МЛАДЕН,
Помогут ли следующие коды...
Следить за накопленным убытком только для конкретной валютной пары и MagicNumber..... Не включая прибыль, которую он получает... Считается только убыток...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
[/PHP]
Your Knowledge is highly appreciated...
yours truly
AZRUL....Нет, не будет
Если вы хотите сложить только убытки, вам нужно добавить
&& (OrderProfit()+OrderCommission()+OrderSwap()<0)
Таким образом, функция будет выглядеть следующим образом :
[PHP]void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Уважаемый господин MLADEN....
В настоящее время я использую эти коды в своем советнике, который работает на таймфрейме M15...
Он открывает новый ордер после таймфрейма M15...
bool AddP()
{int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++)
{if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0))
{
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();
}
}
if(_num==0) return(true);
if(_num>0 && ((Time[0]-_ot))>0)
return(true);
else return(false);
}
Не могли бы вы изменить этот код, чтобы он открывал ордер на каждые 5 минут после предыдущего ордера....
хотя я нахожусь на таймфрейме M15....
НАДЕЮСЬ, ВЫ НЕ ОБИДИТЕСЬ, ЕСЛИ Я ОТПРАВЛЮ ВАМ СТОЛЬКО ВОПРОСОВ....
с наилучшими пожеланиями
AZRUL...
Нет, не будет
Если вы хотите суммировать только проигрыши, вы должны добавить
&& (OrderProfit()+OrderCommission()+OrderSwap()<0)
Таким образом, функция будет выглядеть следующим образом:
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Уважаемый сэр МЛАДЕН,
Вы действительно знаете, как сделать так, чтобы все было сделано здесь....
Я ОЧЕНЬ-ОЧЕНЬ РАД получить от вас ответ, сэр....
Напишите мне, если есть что-нибудь, что я мог бы сделать взамен... кроме кодирования....
Спасибо
С наилучшими пожеланиями
AZRUL...