ea_vr-stealth.3.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea_vr-stealth.3.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для MetaTrader 4, реализующий ручное управление торговыми позициями и ордерами. Поддерживает установку и модификацию StopLoss, TakeProfit, Breakeven, трейлинг-стопа, а также закрытие и удаление ордеров через графическую панель на графике. Использует торговые функции MetaTrader 4 для открытия, закрытия и удаления ордеров, включая отложенные ордера типа Buy Limit, Sell Limit, Buy Stop и Sell Stop.
Настройки программы
| Настройка | Описание |
|---|---|
| 0.01; (StartLots) | Начальный лот — Начальный объём сделки; в инициализации корректируется по минимальному и максимальному лоту брокера. |
| Risk | Риск — Рисковый параметр целочисленного типа, используемый в расчётах советника. |
| 100; (TakeProfit) | Тейк-профит — Расстояние тейк-профита в пунктах, пересчитываемое в цену при инициализации. |
| 100; (StopLoss) | Стоп-лосс — Расстояние стоп-лосса в пунктах, пересчитываемое в цену при инициализации. |
| Trailing | Трейлинг — Логический переключатель включения и выключения трейлинг-стопа. |
| 300; (TrailingStop) | Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах, пересчитываемое в цену. |
| 50; (TrailingStep) | Шаг трейлинга — Шаг изменения трейлинг-стопа в пунктах. |
| 250; (TrailStart) | Начало трейлинга — Расстояние в пунктах, при достижении которого начинается движение трейлинг-стопа. |
| Breakeven | Безубыток — Расстояние для перевода позиции в безубыток в пунктах. |
| Stop_Limit | Стоп-лимит — Расстояние для установки стоп-лимитных ордеров в пунктах. |
| Magic | Магический номер — Магический номер для идентификации ордеров данного советника. |
| Slip | Проскальзывание — Допустимое проскальзывание при открытии и закрытии ордеров. |
| MaxSpread | Максимальный спред — Максимальный допустимый спред в пунктах для фильтрации сделок. |
| MaxOrders | Максимум ордеров — Максимальное количество одновременно открытых ордеров. |
Поиск по коду файла
#property version "3.3"
#property description "Virtual StopLoss, TakeProfit, Breakeven, Traling stop, OrderClose, OrderDelete "
#import "shell32.dll"
int ShellExecuteW(int hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,int nShowCmd);
#import
#include <Dope_mod.mqh>;
input double StartLots=1.0; //0.01;
input int Risk=2;
input int TakeProfit=0; //100;
input int StopLoss=5000; //100;
input bool Trailing=true;
input int TrailingStop=2000; //300;
input int TrailingStep=300; //50;
input int TrailStart=600; //250;
input int Breakeven=300;
input int Stop_Limit=250;
input int Magic=0;
input int Slip=20;
input int MaxSpread=300;
input int MaxOrders=20;
color cvit[];
int w=-1,x=0,y=0,ButX=17,BuyY=15,Coment=10, MagicID, prevSig,Slippage, sig,esig;
string Puti="",InpFileName="",info[],prefix="zr",prfx, addTxt;
double tp=0,sl=0,tr=0,br=0,wlot=0,glot=0, Gd_188, Lots;
bool noBuy = false, noSell = false;
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
void but()
{
proverca_sl_tp_ti();
proverca_br_tr();
if(ObjectFind(0,prefix+"TradeLine")!=0)
ButtonCreate(0,"TradeLine",0,5,15,90,5,0,"","Arial",10,clrBlack,clrBlue,clrNONE,false,false,true);
int x0=(int)IntGetX ("TradeLine");
int y0=(int)IntGetY ("TradeLine");
ButtonCreate(0,"Lots",0,x0,y0+14,90,16,0,"LOTS "+DoubleToStr(glot,2),"Arial",10,clrBlack,C'236,233,216');
ButtonCreate(0,"Buy",0,x0,y0+34,90,16,0,"BUY","Arial",10,clrBlack,C'236,233,216');
ButtonCreate(0,"Sel",0,x0,y0+54,90,16,0,"SELL","Arial",10,clrBlack,C'236,233,216');
ButtonCreate(0,"BuyL",0,x0,y0+74,90,16,0,"BUY LIMIT","Arial",10,clrBlack,C'236,233,216');
ButtonCreate(0,"SelL",0,x0,y0+94,90,16,0,"SELL LIMIT","Arial",10,clrBlack,C'236,233,216');
ButtonCreate(0,"BuyS",0,x0,y0+114,90,16,0,"BUY STOP","Arial",10,clrBlack,C'236,233,216');
ButtonCreate(0,"SelS",0,x0,y0+134,90,16,0,"SELL STOP","Arial",10,clrBlack,C'236,233,216');
ButtonCreate(0,"Close",0,x0,y0+154,90,16,0,"CLOSE ALL","Arial",9,clrBlack,clrPink);
ButtonCreate(0,"Sclp",0,x0,y0+174,90,16,0,"Auto-Scalp","Arial",9,clrBlack,C'236,233,216');
ButtonCreate(0,"Trl",0,x0,y0+194,90,16,0,"Trail All","Arial",9,clrBlack,C'236,233,216');
ButtonCreate(0,"NB",0,x0,y0+214,90,16,0,"No BUY","Arial",9,clrBlack,C'236,233,216');
ButtonCreate(0,"NS",0,x0,y0+234,90,16,0,"No SELL","Arial",9,clrBlack,C'236,233,216');
ButtonCreate(0,"CB",0,x0,y0+254,90,16,0,"Close BUY","Arial",9,clrBlack,C'236,233,216');
ButtonCreate(0,"CS",0,x0,y0+274,90,16,0,"Close SELL","Arial",9,clrBlack,C'236,233,216');
ButtonCreate(0,"Sep",0,x0,y0+294,90,5,0,"","Arial",10,clrBlack,clrBlue,clrNONE,false,false,true);
ButtonCreate(0,"TimeT",0,x0,y0+314,90,16,0,"Candle Time","Arial",9,clrBlack,C'236,233,216');
ButtonCreate(0,"ScreenShot",0,x0,y0+334,90,16,0,"SCREENSHOT","Arial",9,clrBlack,C'236,233,216');
ChartRedraw(0);
if(but_stat(prefix+"TimeT")==true)
tim();
else
obj_del("clock");
if(but_stat(prefix+"LOTS")==true)
{
for(int i=0; i<=20; i++)
{
ButtonCreate(0,StringConcatenate("lot",i),0,x0+105,y0+15+20*i,50,18,0,DoubleToStr(wlot*(i+1),2),"Arial",10,clrBlack,C'236,233,216');
if(but_stat(StringConcatenate(prefix,"lot",i))==true)
{
glot=wlot*(i+1);
button_off(StringConcatenate("lot",i));
button_off("LOTS");
}
}
}
else
for(int xx=0; xx<=20; xx++)
ObjectDelete(StringConcatenate(prefix,"lot",xx));
ChartRedraw(0);
double Dist=NormalizeDouble(Stop_Limit*_Point,_Digits);
if(but_stat(prefix+"Buy")==true)
if(openorders(_Symbol,0,glot)==true)
button_off("Buy");
if(but_stat(prefix+"Sel")==true)
if(openorders(_Symbol,1,glot)==true)
button_off("Sel");
if(but_stat(prefix+"BuyL")==true)
if(openorders(_Symbol,2,glot,Ask-Dist)==true)
button_off("BuyL");
if(but_stat(prefix+"SelL")==true)
if(openorders(_Symbol,3,glot,Bid+Dist)==true)
button_off("SelL");
if(but_stat(prefix+"BuyS")==true)
if(openorders(_Symbol,4,glot,Ask+Dist)==true)
button_off("BuyS");
if(but_stat(prefix+"SelS")==true)
if(openorders(_Symbol,5,glot,Bid-Dist)==true)
button_off("SelS");
if(but_stat(prefix+"Close")==true)
{
CloseAll();
button_off("Close");
}
if(but_stat(prefix+"Sclp")==true)
{ addTxt="DOPE scalping ON";
dope();
}
else {addTxt=""; button_off("Sclp");}
if(but_stat(prefix+"Trl")==true) //overrides Trailing in input settings; the function is in mqh
{
trailing();
}
else { button_off("Trl");}
if(but_stat(prefix+"NB")==true)
{ noBuy=true;
}
else {noBuy=false; button_off("NB");}
if(but_stat(prefix+"NS")==true)
{ noSell=true;
}
else {noSell=false; button_off("NS");}
if(but_stat(prefix+"CB")==true)
{ CloseBuy();
button_off("CB");
}
if(but_stat(prefix+"CS")==true)
{ CloseSell();
button_off("CS");}
for( i=OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==Magic || Magic==-1)
if(OrderSymbol()==_Symbol)
{
x=y=0;ChartTimePriceToXY(0,0,(OrderOpenTime()),OrderOpenPrice(),x,y);
if(ObjectFind(StringConcatenate(prefix+"Re",OrderTicket()))!=0)
ButtonCreate(0,StringConcatenate("Re",OrderTicket()),0,x+20,y,ButX+5,BuyY,0,"< >","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,true,true,0,"Move the menu");
SetX(StringConcatenate(prefix+"Re",OrderTicket()),y);
int x2=(int)IntGetX (StringConcatenate("Re",OrderTicket()));
int y2=(int)IntGetY (StringConcatenate("Re",OrderTicket()));
ButtonCreate(0,StringConcatenate("Sl",OrderTicket()),0,x2+25,y2,ButX,BuyY,0,"Sl","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,false,true,0,"StopLoss");
ButtonCreate(0,StringConcatenate("Tp",OrderTicket()),0,x2+45 ,y2,ButX,BuyY,0,"Tp","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,false,true,0,"TakeProfit");
ButtonCreate(0,StringConcatenate("Br",OrderTicket()),0,x2+65 ,y2,ButX,BuyY,0,"Br","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,false,true,0,"Breakeven");
ButtonCreate(0,StringConcatenate("Tr",OrderTicket()),0,x2+85 ,y2,ButX,BuyY,0,"Tr","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,false,true,0,"Ttrailing Stop");
ButtonCreate(0,StringConcatenate("Ti",OrderTicket()),0,x2+105,y2,ButX,BuyY,0,"Ti","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,false,true,0,"Time Close");
ButtonCreate(0,StringConcatenate("Xx",OrderTicket()),0,x2+125,y2,ButX,BuyY,0,"X","Arial",8,clrBlack,C'236,233,216',clrNONE,false,false,false,true,0,"Close Order");
}
for( i=ObjectsTotal()-1; i>=0; i--)
if(ObjectType(ObjectName(i))==OBJ_BUTTON)
if(but_stat(ObjectName(i))==true)
ObjectSetInteger(0,ObjectName(i),OBJPROP_BGCOLOR,clrLightGreen);
else
ObjectSetInteger(0,ObjectName(i),OBJPROP_BGCOLOR,C'236,233,216');
if(but_stat(prefix+"ScreenShot")==true)
{
Puti=StringConcatenate(TimeS()+" "+_Symbol+".png");
if(WindowScreenShot(Puti,(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS),(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS))==true)
w=MessageBox(" Open ? "+Puti,"Open SCREENSHOT "+Puti,MB_OKCANCEL|MB_ICONQUESTION);
if(w==1)
if(ShellExecuteW(NULL,"open",TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL4\\Files\\"+Puti,NULL,NULL,1)>0)
button_off("ScreenShot");
if(w==2)
button_off("ScreenShot");
}
int tik=-1,typ=-1;
string nameX="",nameTP="",nameSL="",nameBR="",nameTR="",nameTI="";
double op=0;
for( i=OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==Magic || Magic==-1)
if(OrderSymbol()==_Symbol)
{
tik=OrderTicket();
typ=OrderType();
op=OrderOpenPrice();
nameX =StringConcatenate(prefix,"Xx",tik);
nameTP=StringConcatenate(prefix,"Tp",tik);
nameSL=StringConcatenate(prefix,"Sl",tik);
nameBR=StringConcatenate(prefix,"Br",tik);
nameTR=StringConcatenate(prefix,"Tr",tik);
nameTI=StringConcatenate(prefix,"Ti",tik);
if(ObjectGetInteger(0,nameX,OBJPROP_STATE)==true) closeorders(tik);
if(typ==0 )
{
if(but_stat(nameTP)==true)
obj_cre(StringConcatenate("tp",tik),(Ask+tp),clrGreen);
else
obj_del(StringConcatenate("tp",tik));
if(but_stat(nameSL)==true)
obj_cre(StringConcatenate("sl",tik),(Bid-sl),clrRed);
else
obj_del(StringConcatenate("sl",tik));
}
if(typ==1 )
{
if(but_stat(nameTP)==true)
obj_cre(StringConcatenate("tp",tik),(Bid-tp),clrGreen);
else
obj_del(StringConcatenate("tp",tik));
if(but_stat(nameSL)==true)
obj_cre(StringConcatenate("sl",tik),(Ask+sl),clrRed);
else
obj_del(StringConcatenate("sl",tik));
}
if(typ==2 || typ==4)
{
if(but_stat(nameTP)==true)
obj_cre(StringConcatenate("tp",tik),(op+tp),clrGreen);
else
obj_del(StringConcatenate("tp",tik));
if(but_stat(nameSL)==true)
obj_cre(StringConcatenate("sl",tik),(op-sl),clrRed);
else
obj_del(StringConcatenate("sl",tik));
}
if(typ==3 || typ==5)
{
if(but_stat(nameTP)==true)
obj_cre(StringConcatenate("tp",tik),(op-tp),clrGreen);
else
obj_del(StringConcatenate("tp",tik));
if(but_stat(nameSL)==true)
obj_cre(StringConcatenate("sl",tik),(op+sl),clrRed);
else
obj_del(StringConcatenate("sl",tik));
}
if(but_stat(nameBR)==true)
{
if(((Ask-br)>op) && typ==0) obj_cre(StringConcatenate("br",tik),op,clrGreen);
if(((Bid+br)<op) && typ==1) obj_cre(StringConcatenate("br",tik),op,clrGreen);
}
else obj_del(StringConcatenate("br",tik));
if(but_stat(nameTR)==true)
{
if(((Ask-tr)>op) && typ==0) obj_cre(StringConcatenate("tr",tik),op,clrGreen);
if(((Bid+tr)<op) && typ==1) obj_cre(StringConcatenate("tr",tik),op,clrGreen);
}
else obj_del(StringConcatenate("tr",tik));
if(but_stat(nameTI)==true)
obj_cre_v_line(StringConcatenate("ti",tik),clrGreen);
else
obj_del(StringConcatenate("ti",tik));
}
his_del_obj();
uroven();
}
void uroven()
{
int typ=-1,tik=-1; double op=0; string name="";
for(int i=OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==Magic || Magic==-1)
if(OrderSymbol()==_Symbol)
{
typ=OrderType();
tik=OrderTicket();
op=NormalizeDouble(OrderOpenPrice(),_Digits);
name=StringConcatenate("Op",tik);
if(typ==2 || typ==4)
{
if(ObjectFind(0,name)==-1)
obj_cre_h_line(name,op,clrBlue);
}
if(typ==3 || typ==5)
{
if(ObjectFind(0,name)==-1)
obj_cre_h_line(name,op,clrOrangeRed);
}
if(ObjectFind(0,name)==0)
if(op!=NormalizeDouble(get_object(name),_Digits))
if(OrderModify(OrderTicket(),NormalizeDouble(get_object(name),_Digits),OrderStopLoss(),OrderTakeProfit(),0,clrGreen)==true)
pr(" OrderModify Ok !");
else
pr(__FUNCTION__+"OrderModify Error !");
}
}
void obj_cre_h_line(string txt,double pri,color col)
{
if(ObjectFind(0,txt)==-1)
{
ObjectCreate(0,txt,OBJ_HLINE,0,0,0);
ObjectSetDouble(0,txt,OBJPROP_PRICE1,pri);
ObjectSetInteger(0,txt,OBJPROP_COLOR,col);
ObjectSetInteger(0,txt,OBJPROP_WIDTH,1);
ObjectSetInteger(0,txt,OBJPROP_STYLE,3);
ObjectSetString(0,txt,OBJPROP_TOOLTIP,txt);
WindowRedraw();
}
}
void proverca_br_tr()
{
int tik=-1;
double bb=0,rr=0;
for(int i=OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==Magic || Magic==-1)
if(OrderSymbol()==_Symbol)
{
tik=OrderTicket();
bb=NormalizeDouble(get_object(StringConcatenate("br",tik)),_Digits);
rr=NormalizeDouble(get_object(StringConcatenate("tr",tik)),_Digits);
RefreshRates();
if(OrderType()==0)
if(bb>0)
if(Bid<=bb)
closeorders(tik);
if(OrderType()==1)
if(bb>0)
if(Ask>=bb)
closeorders(tik);
if(OrderType()==0)
if(rr>0)
{
if((Bid-tr)>rr)
set_object(StringConcatenate("tr",tik),(Ask-tr));
if(Bid<=rr)
closeorders(tik);
}
if(OrderType()==1)
if(rr>0)
{
if((Ask+tr)<rr)
set_object(StringConcatenate("tr",tik),(Bid+tr));
if(Ask>=rr)
closeorders(tik);
}
}
}
bool set_object(string name,double pri)
{
return ObjectSetDouble(0,name,OBJPROP_PRICE,pri);
}
bool proverca_sl_tp_ti()
{
int tik=-1;
string ti="";
double tt=0,ss=0;
for(int i=OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==Magic || Magic==-1)
if(OrderSymbol()==_Symbol)
{
tik=OrderTicket();
tt=NormalizeDouble(get_object(StringConcatenate("tp",tik)),_Digits);
ss=NormalizeDouble(get_object(StringConcatenate("sl",tik)),_Digits);
ti=StringConcatenate("ti",tik);
RefreshRates();
if(OrderType()==0)
{
if(tt>0)
if(Bid>tt)
closeorders(tik);
if(ss>0)
if(Bid<ss)
closeorders(tik);
if(ObjectFind(ti)==0)if((int)TimeCurrent()>(int)get_object_ti(ti))closeorders(tik);
}
if(OrderType()==1)
{
if(tt>0)
if(Ask<tt)
closeorders(tik);
if(ss>0)
if(Ask>ss)
closeorders(tik);
if(ObjectFind(ti)==0)if((int)TimeCurrent()>(int)get_object_ti(ti))closeorders(tik);
}
if(OrderType()>1)
if(ObjectFind(ti)==0)if((int)TimeCurrent()>(int)get_object_ti(ti))closeorders(tik);
}
return false;
}
datetime get_object_ti(string name)
{
return (datetime)ObjectGetInteger(0,name,OBJPROP_TIME);
}
double get_object(string name)
{
double rez=0;
ObjectGetDouble(0,name,OBJPROP_PRICE,0,rez);
return rez;
}
void his_del_obj()
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(OrderMagicNumber()==Magic || Magic==-1)
if(OrderSymbol()==_Symbol)
{
ObjectDelete(0,StringConcatenate(prefix,"Sl",OrderTicket()));
ObjectDelete(0,StringConcatenate(prefix,"Tp",OrderTicket()));
ObjectDelete(0,StringConcatenate(prefix,"Br",OrderTicket()));
ObjectDelete(0,StringConcatenate(prefix,"Tr",OrderTicket()));
ObjectDelete(0,StringConcatenate(prefix,"Ti",OrderTicket()));
ObjectDelete(0,StringConcatenate(prefix,"Re",OrderTicket()));
ObjectDelete(0,StringConcatenate(prefix,"Xx",OrderTicket()));
ObjectDelete(0,StringConcatenate("Op",OrderTicket()));
ObjectDelete(0,StringConcatenate("sl",OrderTicket()));
ObjectDelete(0,StringConcatenate("tp",OrderTicket()));
ObjectDelete(0,StringConcatenate("br",OrderTicket()));
ObjectDelete(0,StringConcatenate("tr",OrderTicket()));
ObjectDelete(0,StringConcatenate("ti",OrderTicket()));
}
}
void obj_cre_v_line(string txt,color col)
{
if(ObjectFind(0,txt)==-1)
{
ObjectCreate(0,txt,OBJ_VLINE,0,Time[0]+_Period*10*60,0);
ObjectSetInteger(0,txt,OBJPROP_TIME,Time[0]+_Period*10*60);
ObjectSetInteger(0,txt,OBJPROP_COLOR,col);
ObjectSetInteger(0,txt,OBJPROP_WIDTH,2);
ObjectSetString(0,txt,OBJPROP_TOOLTIP,txt);
WindowRedraw();
}
}
void obj_cre(string txt,double pri,color col)
{
if(ObjectFind(0,txt)==-1)
{
ObjectCreate(0,txt,OBJ_ARROW_RIGHT_PRICE,0,Time[0],pri);
ObjectSetInteger(0,txt,OBJPROP_TIME,Time[0]);
ObjectSetDouble(0,txt,OBJPROP_PRICE,pri);
ObjectSetInteger(0,txt,OBJPROP_COLOR,col);
ObjectSetInteger(0,txt,OBJPROP_WIDTH,3);
ObjectSetString(0,txt,OBJPROP_TOOLTIP,txt);
WindowRedraw();
}
}
void obj_del(string txt)
{
ObjectDelete(0,txt);
}
bool closeorders(int tik)
{
string sy="";
if(OrderSelect(tik,SELECT_BY_TICKET))
if(OrderMagicNumber()==Magic || Magic==-1)
if(OrderSymbol()==_Symbol)
if(OrderTicket()==tik)
{
sy=OrderSymbol();
if(OrderType()==0)
if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(sy,MODE_BID),Slip,clrBlue)==true)
pr("BUY order closed");
else
pr("BUY order close Error !!!"+Error(GetLastError()),clrRed);
if(OrderType()==1)
if(OrderClose(OrderTicket(),OrderLots(),MarketInfo(sy,MODE_ASK),Slip,clrRed)==true)
pr("SELL order closed ");
else
pr("SELL order close Error !!!"+Error(GetLastError()),clrRed);
if(OrderType()>1)
if(OrderDelete(tik,clrRed)==true)
pr("Pending ord. deleted");
else
pr("Pending ord. delete Error !!!"+Error(GetLastError()),clrRed);
}
return false;
}
void SetX(const string name,int xx)
{
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,xx);
}
bool openorders(string sy="",int typ=0,double lot=0,double price=0,string com="")
{
int tik=-2,p=0;
color col;
string otype;
if(sy=="")sy=_Symbol;
if(lot<MarketInfo(sy,MODE_MINLOT))lot=MarketInfo(sy,MODE_MINLOT);
if(price==0) // Если цена не указана
{
if(typ==0) {price=MarketInfo(sy,MODE_ASK); col=clrBlue; otype="BUY"; }
else {price=MarketInfo(sy,MODE_BID); col=clrRed; otype="SELL";}
}
if(com=="") com=StringConcatenate(WindowExpertName()," ",Magic);
while(!IsTradeContextBusy())
{
tik=OrderSend(sy,typ,NormalizeDouble(lot,2),NormalizeDouble(price,(int)MarketInfo(sy,MODE_DIGITS)),Slip,0,0,com,Magic,0,col);
if(tik>=0) { pr(otype+" order opened"); return true;}
else
{
p++;
pr(__FUNCTION__+"_Error_"+Error(GetLastError()));
Sleep(500);
if(p>=5){ pr(otype+" order open error"); return false;}
}
}
return false;
}
string Error(int error_code)
{
string error_string;
bool Lan=(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian");
switch(error_code)
{
case 0:
if(Lan)
error_string="Нет ошибки."; break;
error_string="No error returned."; break;
case 1:
if(Lan)
error_string="Нет ошибки, но результат неизвестен."; break;
error_string="No error returned, but the result is unknown."; break;
case 2:
if(Lan)
error_string="Общая ошибка."; break;
error_string="Common error."; break;
case 3:
if(Lan)
error_string="Неправильные параметры."; break;
error_string="Invalid trade parameters."; break;
case 4:
if(Lan)
error_string="Торговый сервер занят."; break;
error_string="Trade server is busy."; break;
case 5:
if(Lan)
error_string="Старая версия клиентского терминала."; break;
error_string="Old version of the client terminal."; break;
case 6:
if(Lan)
error_string="Нет связи с торговым сервером."; break;
error_string="No connection with trade server."; break;
case 7:
if(Lan)
error_string="Недостаточно прав."; break;
error_string="Not enough rights."; break;
case 8:
if(Lan)
error_string="Слишком частые запросы."; break;
error_string="Too frequent requests."; break;
case 9:
if(Lan)
error_string="Недопустимая операция нарушающая функционирование сервера."; break;
error_string="Malfunctional trade operation."; break;
case 64:
if(Lan)
error_string="Счет заблокирован."; break;
error_string="Account disabled."; break;
case 65:
if(Lan)
error_string="Неправильный номер счета."; break;
error_string="Invalid account."; Показано первые 50% кода (символов: 31289)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.