Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
ever2,Добрый день! Имеется ли возможность поставить на контрольную панель радиокнопки наподобие "short", "long", "full". Для полуавтомата было бы очень удобно(особенно если по двум или более парам стоишь), а на тестере в полуавтомате без них не обойтись!
Назначение этих кнопок - запрещать роботу открывать сделки в указанном направлении, short на sell, long - buy, full полностью? При включенном значении - разрешено, вы выключенном - запрещено. Правильно я понял?
Назначение этих кнопок - запрещать роботу открывать сделки в указанном направлении, short на sell, long - buy, full полностью? При включенном значении - разрешено, вы выключенном - запрещено. Правильно я понял?
ever2,Добрый день! Имеется ли возможность поставить на контрольную панель радиокнопки наподобие "short", "long", "full". Для полуавтомата было бы очень удобно(особенно если по двум или более парам стоишь), а на тестере в полуавтомате без них не обойтись!
Я то думал, что присутсвующий народ хоть чуточку знает мт4....
Во вкладках "Общие" есть выбор: только лонг, только селл и олл. Что в реале что в тестерном варианте... нахрена вам кнопка в советнике???!!!
Мучаете программеров только, а идей как не было так и нет дельных, а жаль.
Я пока добавил в подобные советники границы торговли дабы не открывать первые продажи близко к историческим недавним максимумам. На продажи так же.
Дымаю, может какой-либо боллинджер стаошего тф в фильтр вместо канала для автомата.... но это просто мысли в слух..
Не внимательно читали мой пост, придется повторить "Для полуавтомата было бы очень удобно(особенно если по двум или более парам стоишь), а на тестере в полуавтомате без них не обойтись!"
Запустили тест в визуальном режиме,кнопку на панели "manual trading" нажали, увидили свой сетап на покупку, нажали флажок "long", кнопку "Buy"и кнопку "auto trading", советник подхватил сделку, когда движение закончилось, жмем "Stop trading".
Для продаж все то же самое, только флаг "short". Используйте свой шаблон и свои правила входа, а сопровождение сделок оставьте для алгоритма советника, все это доступно на тестере. Я описал лишь один из возможных сценариев теста своей стратегии с помощью этого советника. Вот так я понимаю полуавтомат. Изменять "только бай" или "только шорт" методами терминала можно, но для этого придется прервать тест, это совсем плохо. А в реальной торговле любой из нас рано или поздно забудет что стоит "только бай(шорт)", наличие флажков на панели помогает избежать этого.
Могу я вас еще раз попросить расписать хотя бы пункты влияющие на работу советника. Спасибо заранее!!
GMTMode - Настройка
GMToffsetManual-
str01=----- Working time (GMT+0) -----
UseWorkingTime=false
TimeStart=16:00 задать время запуска советника
TimeStopNewOrder=04:00 ограничение по времени открытия новых ордеров. Старые ордера робот закроет самостоятельно (это занчит по прибыли или в любом состоянии в это время??)
UseTimeStop=false Это что?
TimeStop=08:00 время отсечки, после которого закрываются все сделки
EnableTradingFriday=false
EnableTradingMonday=true
str08=----- Main Parameters -----
UseTradeType -настройка автоматического или полуавтоматического режима.
UseStrategy=1
UseOrderType- режим выставления ордеров. Советник Cobra Night рассчитывает ценовые уровни, по которым выставляет ордера двух типов – отложенные (сразу после расчета), по рынку – после пересечения расчетных уровней котировками.
MaxSpread - Максимльный спред
TakeProfit - ТП
StopLoss - Стоплос
StopTradingAfterStopLoss=false
str09=----- Rollback Prices Strategy -----
PeriodForPendingOrder - временной интервал между открытием ордеров. По умолчанию стоит значение в тиках. Это позволяет оперативно наращивать и закрывать позицию в буквальном смысле «внутри свечи».
PeriodForPendingCustom=3
PipsStep - шаг сетки. Шаг соответствует минимальному изменению значения цены в Метатрейдере (последнему знаку), поэтому для четырехзначных счетов – это будет 1 пипс, для пятизначных – 0,1 пипса.
UsePipsStepProgression=true
PipsStepCoeff=1.4
PipsStepCoeffOrderStart=5
MaxOrders Максимальное количество ордеров в сетке
Distance- расстояние от KAMA, до первого ордера, открываемого после смены режима. Параметр измеряется в пипсах, используйте значение средней волатильности, чтобы вычислить отклонение для каждого таймфрейма.
KAMAPeriod - настройки скользящей средней Кауфмана.
FastMAPeriod=2
SlowMAPeriod=30
ProfitCoeff=1.0
CloseAtMidnight - закрытие ордеров по условию профита в полночь, чтобы избежать свопа
MidnightProfitCoeff - Коэфициент в чем?
str10=----- RSI Indicator -----
UseRSI=true
RSIperiod=14
SellLevel=70.0
BuyLevel=30.0
str11=----- Martingale -----режим простой сетки без увеличения ордеров или Мартингейл тактика
UseMartingale=true
UseProgression=1
ArithmeticalCoeff=0.01
GeometricCoeff=1.4
str12=----- Break-Even -----
UseBreakEven=false
BreakEvenAfter=30
BreakEvenTo=10
UseBreakEvenAfterXStep=false
XStep=5
str13=----- Trailing-Stop -----
UseTrailingStop=false
TrailingStop=90
TrailingStep=10
str21=----- Money-Management -----
LotType=2
LotFix=0.01
LotMax=200.0
Risk=0.2
CommssionPerLot=15.0
UseEquityStop=false
TotalEquityRisk=30.0
str0=----- News -----
MinBefore=5
MinAfter=5
VHigh=true
VMedium=true
VLow=false
NewsSymb=GBP,EUR
DrawLines=true
Next=false
Signal=false
HighColor=255
MediumColor=16711680
LowColor=65280
Style=2
str1=--------------
EnableControlPanel=true
EnableInfoPanel=true
EnablePotentialProfitLine=true
PotentialProfitLineColor=32768
EnableOrderProfitInformation=true
OrderProfitInformation=3
InpFontSize=12
InpColor=255
str05=----- Voice -----
EnableVoice=false
VoiceLanguage=2
UseVoiceTime=true
VoiceTimeStartGMT0=04:00
VoiceTimeStopGMT0=18:00
Slippage=3
Magic_Number=7396283
нужен для построения линии потенциального профита. Означает Размер минимального изменения цены инструмента в валюте депозита. Для питизнака это стоимость при изменении цены на 0.00001.
Можно было конечно читать MODE_TICKVALUE. Но вынес как отдельная настройка.
нужен для построения линии потенциального профита. Означает Размер минимального изменения цены инструмента в валюте депозита. Для питизнака это стоимость при изменении цены на 0.00001.
Можно было конечно читать MODE_TICKVALUE. Но вынес как отдельная настройка.
Уязвимое место! MODE_TICKVALUE конечно, никуда не годится, но и предложенный подход не совсем корректен, значение стоимости изменения цены за пипс динамично, придется все время корректировать. Или я ошибаюсь?
Уязвимое место! MODE_TICKVALUE конечно, никуда не годится, но и предложенный подход не совсем корректен, значение стоимости изменения цены за пипс динамично, придется все время корректировать. Или я ошибаюсь?
ну если вы торганете на пятизнаке лотом 0.01 и цена изменится на один тик, сколько будет профит. Наверно 0.01 USD - один цент. И это значение насколько я знаю не меняется у большинства брокеров. На рублевом счете это значение другое конечно. Торганите на демо-рублевом счете лотом 0.01 и посмотрите сколько стоит один тик.
Пример, AUDUSD цена лота 100 000 AUD, относительно не долларовой валюты депозита значение ProfitOneTick будет меняться с ростом или падением AUDUSD. Примерно так. (исправил ошибку, извините)
К сожалению, я не прогер, но активно интересуюсь!
В тему почитал интересную (для меня) статью с соседнего форума _http://mql.opentraders.ru/25225.html. Если пригодится, буду рад.
Расчет уровня БУ (методы, формулы и примеры кода)
•
• Программирование на MQL
В нескольких топиках довелось участвовать в сраче обсуждении того, как рассчитывать уровень без убытка…
И вроде бы не сложный вопрос, вызывает порой серьезные затруднения и буйный полет фантазии в решениях
На самом деле все очень просто. Расскажу как это делаю я
1. Расчет уровня БУ без учета комиссий, свопов и прочего. Чистое арифметическое среднее.
Из со школы все знают формулу
или простой наглядный пример
Применение этой формулы в коде:
Код:
double lots=0;
double sum=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()==OP_BUY)
{
lots=lots+OrderLots();
sum=sum+OrderLots()*OrderOpenPrice();
}
if (OrderType()==OP_SELL)
{
lots=lots-OrderLots();
sum=sum-OrderLots()*OrderOpenPrice();
}
}
double price=0;
if (lots!=0) price=sum/lots;
Рассмотрим как это работает:
Сначала посмотрим в конец примера…
Искомый уровень БУ вычисляется здесь price=sum/lots;
А в переменных «lots» и «sum» содержатся данные по открытым ордерам, собираемые в цикле.
Причем для ордеров типа «Buy» данные ордеров берутся со знаком "+", а для «Sell» соответственно с "-".
Делается это из-за того, что ордера противоположного направления, компенсируют друг друга.
Сначала то, что касается переменной «lots»…
Прибавляя объем ордеров (OrderLots) одного типа и вычитая объемы противоположных ордеров, определим — не является ли сумма ордеров равновесной?
Ведь если объем ордеров на покупку, равен объему ордеров на продажу, то уровня без убытка просто не существует.
Теперь рассмотрим, как подсчитывается «sum»…
В ней суммируются произведения цены открытия ордера (OrderOpenPrice), на его объем (OrderLots). Т.е. цена ордера берется столько раз, сколько лотов в этом ордере.
Для примера, если взять два ордера Buy равного объема (пусть объем равен 1) с ценами открытия Pr1= 100 и Pr2=200, то сразу видно что среднее значение равно 150-ти.
А если их объемы будут равны Lot1=2, а Lot2=5? Ведь в таком случае второй ордер будет сильнее влиять на нашу прибыль/убыток.
Учтем это взяв цену первого ордера 2 раза, а цену второго соответственно 5 раз.
И для получения среднего, разделим на количество слагаемых.
Таким образом мы приходим в выражению price=sum/lots.
Для практического применения его нужно еще привести к нужному количеству знаков после запятой, но это уже другой вопрос.
2. Расчет уровня БУ с учетом свопов и комиссий.
(далее рассматриваются случаи для наиболее распространенных (в данный момент) долларовых депозитов)
Этот вопрос намного интереснее и не так прост.
Общая идея учета комиссий и свопов, в том, что бы определить, на каком уровне полученный профит компенсирует
начисленные суммы и общий результат сделок будет равен нулю.
Так как комиссии и свопы начисляются не в пунктах, а в валюте депозита, то тут начинает играть роль стоимость одного пункта.
А она зависит от торгуемой пары.
— Так для обратных котировок (EUR/USD, GBP/USD и всех других где доллар стоит в знаменателе) все просто:
Цена пункта = размер пункта * объем позиции
Для 1-го стандартного лота, стоимость одного (4зн) пункта всегда равна 10$.
— Для прямых котировок (USD/JPY, USD/CHF и других, где USD стоит в числителе) уже сложнее… Тут имеет значение текущий курс.
Формула расчета:
Цена пункта = размер пункта * объем позиции / текущий курс
Так как мы рассчитываем цену пункта не по текущему курсу, а по будущему, то расчет уровня БУ уже становится не таким простым.
— И наиболее сложный случай — кроссовые пары (GBP/CHF, EUR/JPY и др.)
Формула для расчета следующая:
Цена пункта = объем позиции * размер пункта * текущая котировка базовой валюты по отношению к USD / текущий курс валютной пары (кросс-курс)
Для примера возьмем GBP/CHF, по курсу 1.4400 франка за 1 фунт, при курсе GBP/USD= 1.5800.
Тогда 1-го лота цена пункта=100000 * 0.0001 * 1.5800 (курс GBP/USD) / 1.4400 = 11 $
В этом случае расчет уровеня БУ становится совершенно не тривиальной задачей,
т.к. требуется знать котировку базовой валюты по отношению к USD на момент достижения этого уровня БУ.
И как же в таком случае быть?
Лично я пришел к выводу, что в практике расчета уровня БУ в советниках, не требуется совершенно точно вычислять уровень БУ.
Если цена находится далеко от предполагаемого уровня, то погрешность вычисления может быть достаточно большой.
Все равно, так как в процессе удержания позиции величина накопленных комиссий и свопов изменяется, то уровень БУ требуется пересчитывать.
И по мере приближения к этому уровню, уточняются значения курсов влияющих на стоимость одного пункта.
А значит и расчет уровня БУ становится точнее.
Общая идея (алгоритм) расчета уровня БУ с учетом комиссий и свопов в следующем:
1. Сначала определяем уровень БУ методом арифметического среднего (см. выше)
2. Далее корректируем найденное значение, для компенсации накопленных начислений.
В этом нам поможет метод MarketInfo(Symbol(), MODE_TICKVALUE), возвращающий размер минимального изменения
цены инструмента в валюте депозита на один стандартный лот.
Программный код отличается предыдущего:
— подсчетом суммы свопов и комиссий: _sumsvop+=OrderSwap( )+OrderCommission( )
— Формулой расчета уровня БУ:
ZeroLevelAll=_sum/_lost ± (_sumsvop / (tickvalue * (_lost)) * Point), в которой
первое слагаемое _sum/_lost — расчет арифметического среднего,
а второе (_sumsvop/ (tickvalue * (_lost)) * Point) — коррекция зависящая
от накопленной суммы и направления несбалансированной позиции.( Переведенная в пункты изменения цены)
ПС: В приведенных примерах рассчитывается БУ для всех ордеров (Buy и Sell) по паре.
Для расчета отодельно по Buy или Sell достаточно в теле цикла закоментировать строки относящиеся к ненужным типам ордеров.
ever2, добрый день! Возник еще один вопрос. Кнопка стоп трейд полностью замораживает торговлю, это не всегда удобно. Пример, сделка в отрицательной зоне и требуется усреднение. Может быть, лучше разрешить закончить цикл усреднения открытой сделке а открытие новых позиций по сигналу индикаторов запретить?