Если Вы хотите заказать советник или индикатор, то публикуйте в эту группу тех. задание. Если Ваш заказ не очень сложный, то велика вероятность, что Вам его смогут сделать даже бесплатно
Программистам MQL: подпишитесь на группу, чтобы получать уведомления о заказах.
Перестал работать скрипт на новых билдах, если можно поправьте. При размещении на график появляется окно «открыть ордер?» А должны появиться сначала линии. Это скрипт для расчёта позиции. SendOrder (e).mq4 (8 Kb)
/+------------------------------------------------------------------+
Скрипт помогает открыть ордер «с рынка» при этом автоматически расчитывает размер лота
в соответствии с установленным Вами уровнем убытка (в процентах от депозита), открывает ордер и
устанавливает StopLoss и TakeProfit.
Вы перемещаете линию StopLoss (красная линия) — советник тут же пересчитывает размер лота
под заданный убыток Вами % убытка, и корректируете расположение TakeProfit (синяя линия).
Размер убытка (в %) нужно указать в настройках советника.
Чтобы установить ордер — удалите красную линию (линия StopLoss).
+------------------------------------------------------------------+
*/
Формулу не знаю, вот этот же скрипт работающий в процентах, потом мне программист добавил в него несколько строк, чтобы считал в валюте. Может это поможет
Формулу не знаю, вот этот же скрипт работающий в процентах, потом мне программист добавил в него несколько строк, чтобы считал в валюте. Может это поможет
//+------------------------------------------------------------------+
//| Version1.mq4 |
//| VadimVP |
//| poluyan@fxmail.ru |
//+------------------------------------------------------------------+
#property copyright «VadimVP»
#property link «poluyan@fxmail.ru»
#include <WinUser32.mqh>
/* /+------------------------------------------------------------------+
Скрипт помогает открыть ордер «с рынка» при этом автоматически расчитывает размер лота
в соответствии с установленным Вами уровнем убытка (в процентах от депозита), открывает ордер и
устанавливает StopLoss и TakeProfit.
Вы перемещаете линию StopLoss (красная мигающая линия) — советник тут же пересчитывает размер лота
под заданный убыток Вами % убытка, и корректирует расположение TakeProfit (синяя мигающая линия).
Размер убытка (в %) можно изменять прямо на графике перемещая красную стрелку вверх-вниз.
Линия TakeProfit размещается автоматически на том же удалении от цены что и StopLoss но умноженная на
коэффициент kProfitLine.
Чтобы установить ордер — удалите красную мигающую линию (линия StopLoss).
+------------------------------------------------------------------+
*/
// Параметры советника:
double LOSSmin = 2;// минимальный процент убытка (диапазон изменений, нижний предел)
double LOSSmax = 4;// максимальный процент убытка (диапазон изменений, верхний предел)
double MaxLot = 6;// максимально разрешенный Вами лот для ордера
double kProfitLine = 5;// отношение прибыли к убытку, коэффициент TakeProfit = kProfitLine * TrailingStop
color clrOK = Blue; // Цвет шрифта OK
color clrNO = Red; // Цвет шрифта NOT OK
int font = 11; // Размер шрифта
// Формула коррекции % профита Прибыль(%) = ( 100 / ( (100 — Убыток)/100) ) — 100; (в %) можно применить если стоп от 5% депозита и выше
double PFL; color clr; double DilerPercent = 0;
int iii = 0; double STL = 0; double LOT = 0; double deltareal=1; double LOSS = 0.1;
int init() {linebye();return(0);}
int deinit(){Comment (" ");ObjectDelete («10»);ObjectDelete («123»);ObjectDelete( «Profit»);ObjectDelete («321»);ObjectDelete( «label123»);return(0); }
int start()
{
//----
if (IsConnected()) {
я автору топика писал
по ссылке 2 скрипта
(вроде изображаются как автор топика просил), но работу дальше их не проверял
=============================
исходный код на форуме mql есть, там 2 скрипта — покупка с рынки и отложка (но они перестали работать)
а мы имеем дело с переработкой (недоработкой)
ошибка, как написано было Label123 и label123
Редактирован: 25 мая 2015, 22:01
Комментарии (26)
35 AM2 Сообщений: 16285 - Андрей
35 AM2 Сообщений: 16285 - Андрей
35 AM2 Сообщений: 16285 - Андрей
5 Gatti Автор Сообщений: 53
/+------------------------------------------------------------------+
Скрипт помогает открыть ордер «с рынка» при этом автоматически расчитывает размер лота
в соответствии с установленным Вами уровнем убытка (в процентах от депозита), открывает ордер и
устанавливает StopLoss и TakeProfit.
Вы перемещаете линию StopLoss (красная линия) — советник тут же пересчитывает размер лота
под заданный убыток Вами % убытка, и корректируете расположение TakeProfit (синяя линия).
Размер убытка (в %) нужно указать в настройках советника.
Чтобы установить ордер — удалите красную линию (линия StopLoss).
+------------------------------------------------------------------+
*/
35 AM2 Сообщений: 16285 - Андрей
8 poruchik Сообщений: 139
5 Gatti Автор Сообщений: 53
8 poruchik Сообщений: 139
35 AM2 Сообщений: 16285 - Андрей
5 Gatti Автор Сообщений: 53
5 Gatti Автор Сообщений: 53
5 Gatti Автор Сообщений: 53
//+------------------------------------------------------------------+
//| Version1.mq4 |
//| VadimVP |
//| poluyan@fxmail.ru |
//+------------------------------------------------------------------+
#property copyright «VadimVP»
#property link «poluyan@fxmail.ru»
#include <WinUser32.mqh>
/* /+------------------------------------------------------------------+
Скрипт помогает открыть ордер «с рынка» при этом автоматически расчитывает размер лота
в соответствии с установленным Вами уровнем убытка (в процентах от депозита), открывает ордер и
устанавливает StopLoss и TakeProfit.
Вы перемещаете линию StopLoss (красная мигающая линия) — советник тут же пересчитывает размер лота
под заданный убыток Вами % убытка, и корректирует расположение TakeProfit (синяя мигающая линия).
Размер убытка (в %) можно изменять прямо на графике перемещая красную стрелку вверх-вниз.
Линия TakeProfit размещается автоматически на том же удалении от цены что и StopLoss но умноженная на
коэффициент kProfitLine.
Чтобы установить ордер — удалите красную мигающую линию (линия StopLoss).
+------------------------------------------------------------------+
*/
// Параметры советника:
double LOSSmin = 2;// минимальный процент убытка (диапазон изменений, нижний предел)
double LOSSmax = 4;// максимальный процент убытка (диапазон изменений, верхний предел)
double MaxLot = 6;// максимально разрешенный Вами лот для ордера
double kProfitLine = 5;// отношение прибыли к убытку, коэффициент TakeProfit = kProfitLine * TrailingStop
color clrOK = Blue; // Цвет шрифта OK
color clrNO = Red; // Цвет шрифта NOT OK
int font = 11; // Размер шрифта
//-------------------------------------------------------------------+
// Формула коррекции % профита Прибыль(%) = ( 100 / ( (100 — Убыток)/100) ) — 100; (в %) можно применить если стоп от 5% депозита и выше
double PFL; color clr; double DilerPercent = 0;
int iii = 0; double STL = 0; double LOT = 0; double deltareal=1; double LOSS = 0.1;
int init() {linebye();return(0);}
int deinit(){Comment (" ");ObjectDelete («10»);ObjectDelete («123»);ObjectDelete( «Profit»);ObjectDelete («321»);ObjectDelete( «label123»);return(0); }
int start()
{
//----
if (IsConnected()) {
while ( ObjectFind(«Label123»)!=(-1) )
{if (ObjectFind(«Label123») == (-1)) {linebye();}
if (ObjectFind(«123») == (-1)) {ObjectCreate («123»,OBJ_TEXT,0,Time[WindowBarsPerChart( )/3] ,WindowPriceMax() — (WindowPriceMax() — WindowPriceMin())/10 );
ObjectSetText(«123», «Старт скрипта», font, «Arial», clr);}
if (ObjectFind(«321») == (-1)) {ObjectCreate («321»,OBJ_ARROW,0,Time[WindowBarsPerChart( )/2] ,WindowPriceMin()+((WindowPriceMax() — WindowPriceMin())/10) );
ObjectSet(«321», OBJPROP_ARROWCODE, 231); ObjectSet(«321», OBJPROP_WIDTH, 2); }
STL = ObjectGet(«Label123», 1); textset(); DrowProfitLine();
if (iii == 5) {Sleep (30); ObjectSet( «label123», 6, Red); ObjectSet( «Profit», 6, Blue); WindowRedraw( ) ;} else Sleep (30);
if (iii == 10) {Sleep (30); ObjectSet( «label123», 6, PeachPuff);ObjectSet( «Profit», 6, LightBlue); WindowRedraw( ) ;} else Sleep (30);
if (iii >= 10) iii = 0; iii = iii+1;
}
//-----------------------------------
ObjectCreate( «label123», OBJ_HLINE, 0, 0, STL); ObjectSet( «label123», 6, Red);
ObjectSet( «label123», 8, 3);WindowRedraw( );
if (MessageBox (" Открыть ордер ??? ",«Скрипт интересуется:»,1)==1) startset();
} else MessageBox («Нет соединения с сервером!!!»," Скрипт сообщает:",0x00000000);
//----
return(0);
}
//+------------------------------------------------------------------+
int linebye() {// Рисуем линию (которая мигает)
ObjectDelete( «label123»);
ObjectCreate( «label123», OBJ_HLINE, 0, 0, (MarketInfo( Symbol(), MODE_BID) -Point*((MarketInfo(Symbol(), MODE_STOPLEVEL)+10*MathPow(10,Digits)/10000 ))) );
ObjectSet( «label123», 6, White); ObjectSet( «label123», 8, 2); WindowRedraw( );
return(0); }
//+------------------------------------------------------------------+
double textset() {
double delta = WindowPriceMax() — WindowPriceMin();
double PriceMax = WindowPriceMax() — delta/10;
double PriceMin = delta/10 + WindowPriceMin();
if (ObjectGet(«321», 1) > PriceMax) ObjectSet(«321»,1,PriceMax);
if (ObjectGet(«321», 1) < PriceMin) ObjectSet(«321»,1,PriceMin);
double deltascreen = PriceMax — PriceMin;
LOSS = (((ObjectGet(«321», 1)-PriceMin)/deltascreen)*(LOSSmax — LOSSmin))+LOSSmin;
if (STL > (MarketInfo( Symbol(), MODE_ASK) + Point*MarketInfo(Symbol(), MODE_STOPLEVEL))) deltareal = (STL — MarketInfo( Symbol(), MODE_BID) )/Point;
if (STL < (MarketInfo( Symbol(), MODE_BID) — Point*MarketInfo(Symbol(), MODE_STOPLEVEL))) deltareal = (MarketInfo( Symbol(), MODE_ASK) — STL)/Point;
LOT = ((AccountFreeMargin()*(LOSS/100))/MarketInfo(Symbol(), MODE_TICKVALUE))/deltareal;
LOT = Round(LOT);
double LOSSreal = (LOT*deltareal*MarketInfo(Symbol(), MODE_TICKVALUE)/AccountFreeMargin())*100;
if (MathAbs(LOSS-LOSSreal) < MathAbs(LOSS*0.1)) clr = clrOK; else clr = clrNO;//меняем цвет шрифта
ObjectSetText(«123»,«Задача:LOSS=»+DoubleToStr(LOSS,1)+" % "+"; Получим:LOT="+DoubleToStr(LOT,2)+", LOSS="+DoubleToStr(LOSSreal,2)+"% (Спред="+ DoubleToStr(DilerPercent*100,1)+"%)", font, «Arial», clr);
WindowRedraw( );
Comment ( «Сумма возможного убытка = „+DoubleToStr(AccountFreeMargin()*LOSSreal/100,0));
return(0); }
int startset() {
//-----
Alert (“!!! Пожалуйста дождитель окончания работы скрипта!»);
int resi = 0;
STL = MathRound (STL * MathPow ( 10, MarketInfo(Symbol(), MODE_DIGITS)) );
STL = STL / MathPow ( 10, MarketInfo(Symbol(), MODE_DIGITS));
PFL = MathRound (PFL * MathPow ( 10, MarketInfo(Symbol(), MODE_DIGITS)) );
PFL = PFL / MathPow ( 10, MarketInfo(Symbol(), MODE_DIGITS));
Print(«линии Стопов, Цены Открытия и Профита: »,STL,", ",MarketInfo( Symbol(), MODE_BID),", ",PFL);
if (STL>MarketInfo( Symbol(), MODE_ASK) ) resi = OrderSend (Symbol(),OP_SELL,LOT, MarketInfo( Symbol(), MODE_BID), 10, STL, PFL );
if (STL<MarketInfo( Symbol(), MODE_BID) ) resi = OrderSend (Symbol(),OP_BUY,LOT, MarketInfo( Symbol(), MODE_ASK), 10, STL, PFL );
Alert ("***************************************************");
if (resi == (-1))
Alert ("!!! Неудачное открытие ордера! Повторите попытку! Ошибка №: "+GetLastError());
else Alert («Ордер открыт успешно, результат: „+resi);
Alert (“************ информация от скрипта ************»);
return(0); }
void DrowProfitLine()
{
// ObjectDelete( «Profit»);
if (ObjectFind(«Profit») == (-1)){
ObjectCreate( «Profit», OBJ_HLINE, 0, 0, (MarketInfo( Symbol(), MODE_ASK) +Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL))) );
ObjectSet( «Profit», 6, Blue); ObjectSet( «Profit», 8, 2); WindowRedraw( ) ;}
if (STL > (MarketInfo( Symbol(), MODE_ASK) +Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL)))) {PFL = MarketInfo( Symbol(), MODE_BID) — ((STL-MarketInfo( Symbol(), MODE_BID) )*kProfitLine );
DilerPercent = (MarketInfo( Symbol(), MODE_ASK) — MarketInfo( Symbol(), MODE_BID)) / (STL-MarketInfo( Symbol(), MODE_BID) ); }
if (STL < (MarketInfo( Symbol(), MODE_BID) -Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL)))) {PFL = MarketInfo( Symbol(), MODE_ASK) + ((MarketInfo( Symbol(), MODE_ASK) -STL)*kProfitLine );
DilerPercent =(MarketInfo( Symbol(), MODE_ASK) — MarketInfo( Symbol(), MODE_BID)) / (MarketInfo( Symbol(), MODE_ASK) -STL); }
if (STL > (MarketInfo( Symbol(), MODE_BID) -Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL))) && STL < (MarketInfo( Symbol(), MODE_ASK) +Point*2*(MarketInfo(Symbol(), MODE_STOPLEVEL)))) ObjectDelete( «Profit»);
ObjectSet( «Profit», 1, PFL );
WindowRedraw( );
}
double Round(double A1) // Функция округляет А1 до Шага Лота и проверяет нижнюю границу и верхние границы
{
A1 = MathRound (A1 / MarketInfo(Symbol(), MODE_LOTSTEP));
A1 = A1 * MarketInfo(Symbol(), MODE_LOTSTEP);
if (A1 < MarketInfo(Symbol(), MODE_MINLOT)) A1 = MarketInfo(Symbol(), MODE_MINLOT);
if (A1 > MaxLot) A1 = MaxLot;
if (A1 > (AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED))) A1 = (AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED)); //средства для открытия 1 лота
return(A1);
}
5 Gatti Автор Сообщений: 53
посмотри эти Редактирован: 25 мая 2015, 21:28
8 poruchik Сообщений: 139
35 AM2 Сообщений: 16285 - Андрей
по ссылке 2 скрипта
(вроде изображаются как автор топика просил), но работу дальше их не проверял
=============================
исходный код на форуме mql есть, там 2 скрипта — покупка с рынки и отложка (но они перестали работать)
а мы имеем дело с переработкой (недоработкой)
ошибка, как написано было Label123 и label123 Редактирован: 25 мая 2015, 22:01
8 poruchik Сообщений: 139
35 AM2 Сообщений: 16285 - Андрей
5 Gatti Автор Сообщений: 53
8 poruchik Сообщений: 139
5 Gatti Автор Сообщений: 53
8 poruchik Сообщений: 139
5 Gatti Автор Сообщений: 53
(е)- обычно эвил ставит в переделанных индикаторах
8 poruchik Сообщений: 139
5 Gatti Автор Сообщений: 53
8 poruchik Сообщений: 139
5 Gatti Автор Сообщений: 53
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий