Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как социальный трейдинг увеличит твой доход
lowen
16
lowen 2013.10.30 20:19 

В программировании полный ноль, сам что то пробовал, но ни чего не получается( Прошу кому не трудно помогите составить такой скриптик, что бы открывало на покупку или продажу, с модификацией лота в % по текущей цене и все...

Заранее спасибо!

ktest0
631
ktest0 2013.10.30 23:34  
Где код? что не получилось - поможем....
Artyom Trishkin
69147
Artyom Trishkin 2013.10.31 05:43  
lowen:

В программировании полный ноль, сам что то пробовал, но ни чего не получается( Прошу кому не трудно помогите составить такой скриптик, что бы открывало на покупку или продажу, с модификацией лота в % по текущей цене и все...

Заранее спасибо!

100 баксов, и - пожалуйста...
lowen
16
lowen 2013.10.31 14:48  

Я в программировании не секу, нашел два скрипта, просто открытие позиции и второй расчет лота по %

Как совместить не понимаю(

Это вот я пытался впихнуть)

extern int stoploss = 0, //уровень выставления SL, если 0, то SL не выставляется
takeprofit = 0, //уровень выставления TP, если 0, то TP не выставляется
Magic = 123456; //уникальный номер ордера
extern bool SELL = false, //открыть ордер SELL
BUY = false; //открыть ордер BUY
extern int slippage = 3; //Максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
extern int MaxRisk=100;
//--------------------------------------------------------------------
int start()
{
if (BUY)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy");
}
if (SELL)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0;
OPENORDER ("Sell");
}
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int error,err;
while (true)
{ error=true;
if (ord=="Buy" )
{
double Free =AccountFreeMargin();
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
double Lot =MathFloor(Free*MaxRisk/100/One_Lot/Step)*Step;
if(Lot<Min_Lot) Lot=Min_Lot;
if(Lot>Max_Lot) Lot=Max_Lot;
error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"BUY",Magic,0,Blue);
}
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"SELL",Magic,0,Red);
if (error==-1) //неудачная покупка OK
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
if (error || err >10) return;
}
return;
}

lowen
16
lowen 2013.10.31 14:49  
ПРобывал просто в покупку хотябы вставить, не фига(
Vitalie Postolache
11136
Vitalie Postolache 2013.10.31 18:13  
lowen:
ПРобывал просто в покупку хотябы вставить, не фига(

Нефига обычно выражается номером ошибки в журнале терминала, её сюда надо скопипастить.
lowen
16
lowen 2013.10.31 19:16  
Eroor 4109
Vitalie Postolache
11136
Vitalie Postolache 2013.10.31 19:45  
lowen:
Eroor 4109

Нажать кнопку советники на панели инструментов терминала
lowen
16
lowen 2013.10.31 19:55  
#property show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0, //уровень выставления SL, если 0, то SL не выставляется
takeprofit = 0, //уровень выставления TP, если 0, то TP не выставляется
Magic = 123456; //уникальный номер ордера
extern bool SELL = false, //открыть ордер SELL
BUY = false; //открыть ордер BUY
extern int slippage = 3; //Максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
extern int MaxRisk=100;


int start()
{

//--------------------------------------------------------------------

if (BUY)
{
OPENORDER ("Buy");
}
if (SELL)
{
OPENORDER ("Sell");
}

return (0);
}

//--------------------------------------------------------------------
void OPENORDER(string ord)
{

int error,err;
while (true)
{ error=true;
double Free =AccountFreeMargin();
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
double Lot =MathFloor(Free*MaxRisk/100/One_Lot/Step)*Step;
if(Lot>Max_Lot) Lot=Max_Lot;
if (ord=="Buy" )error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"BUY",Magic,0,Blue);

if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"SELL",Magic,0,Red);
if (error==-1) //неудачная покупка OK
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
if (error || err >10) return;
}
return;
}
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError();
switch ( err )
{
case 1: return;
case 2: Alert("Нет связи с торговым сервером ",Symbol());return;
case 3: Alert("Error неправильные параметры ",Symbol());return;
case 130: Alert("Error близкие стопы Ticket ",Symbol());return;
case 134: Alert("Недостаточно денег ",Symbol());return;
case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
case 129: Alert("Error Неправильная цена ",Symbol());return;
case 131: Alert("Error Неправильный объем ",Symbol());return;
case 4200:Alert("Error Объект уже существует ",Symbol());return;
default: Alert("Error ",err," ",Symbol());return;
}
}
//--------------------------------------------------------------------


В конце концов получилось вот так:) Спасибо большое за помощь, нажатие одной кнопки просто решило исход:)

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий