Исходный код · ID 312
ms_2.mq4
Похожие материалы по тегам
Вы автор или правообладатель?
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ms_2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Поиск по коду файла
#include <stdlib.mqh>
#include <stderror.mqh>
extern double grid = 20;
double gridstep = 6;
double multk[25] = {1,1,1,2,3,4,5};
int limit = 5;
double lotseq[25] = {1,1,2.8,6,6,12,28.8};
double stepseq[25];
double gridseqbuy[25];
double gridseqsell[25];
double spred;
int lastlock, step;
int stateold, statecur;
int sleeppage = 3;
int magic = 120976;
double currentprice, oldprice;
bool setall;
int lastbuy, lastsell, profitorder;
int Initialization() {
statecur = 0;
stateold=statecur;
spred=MarketInfo(Symbol(), MODE_SPREAD)*Point;
RefreshRates();
currentprice = Bid;
OpenOrder (OP_SELL, LotSize(0), Bid, Bid+400*Point, Ask-grid*Point, "", magic, Red);
OpenOrder (OP_BUY, LotSize(0), Ask, Ask-400*Point, Bid+grid*Point, "", magic, Green);
step = 1;
for(int i=0;i<=gridstep;i++)
{
stepseq[i]=multk[i]*grid*Point;
}
setall = SetOrders (LotSize(1), LotSize(1), LotSize(1), LotSize(1));
SearchLastSellBuy();
lastlock=0;
return(0);
}
bool First(){
int ordcnt=0;
for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderTicket() > lastlock) && ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))) {ordcnt++;}
}
if (ordcnt>0) {return(false);}
else {return(true);}
}
double LotSize(int tstep) {
for (int i=0;i<=limit;i++)
double alots=lotseq[i]+alots;
alots++;
double rez = 1*lotseq[tstep];
if (rez < 0.1) {rez = 0.1;}
return(rez);
}
bool AllPresent() {
int buycnt = 0;
int sellcnt = 0;
int buystopcnt = 0;
int buylimitcnt = 0;
int sellstopcnt = 0;
int selllimitcnt = 0;
for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderTicket() > lastlock))
{
switch (OrderType())
{
case 0: buycnt++;
break;
case 1: sellcnt++;
break;
case 2: buylimitcnt++;
break;
case 3: selllimitcnt++;
break;
case 4: buystopcnt++;
break;
case 5: sellstopcnt++;
break;
}
}
}
if (buycnt > sellcnt) {step = buycnt-1;} else {step = sellcnt-1;}
if ((buystopcnt==0) || (buylimitcnt==0) || (sellstopcnt==0) || (selllimitcnt==0)) {return(false);}
else {return(true);}
}
int SearchLastSellBuy(){
lastbuy=0;
lastsell=0;
for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderTicket() > lastlock) && (OrderType() == OP_BUY))
{
if (OrderTicket()>lastbuy) {lastbuy=OrderTicket();}
}
if ((OrderSymbol() == Symbol()) && (OrderTicket() > lastlock) && (OrderType() == OP_SELL))
{
if (OrderTicket()>lastsell) {lastsell=OrderTicket();}
}
}
return(0);
}
bool OpenOrder(int cmd, double vol, double prc, double stl, double tpt, string com, int mag, color clr) {
int err, max;
prc=NormalizeDouble(prc,Digits);
stl=NormalizeDouble(stl,Digits);
tpt=NormalizeDouble(tpt,Digits);
vol=NormalizeDouble(vol,1);
int ticket = -1;
max = 100;
while ((ticket < 0) && (max != 0))
{
RefreshRates();
ticket=OrderSend(Symbol(), cmd, vol, prc, sleeppage, stl, tpt, com, mag, 0, clr);
err=GetLastError();
if (ticket == -1)
{
Comment("Error=", err, " ", ErrorDescription(err));
Sleep(6000);
}
else
{Comment(" ");}
max--;
}
Sleep(1000);
if (max != 0) {return(true);}
else {return(false);}
}
int TakeProfit(){
profitorder=0;
for (int cnt=HistoryTotal()-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
if ((OrderType() == OP_SELL) || (OrderType() == OP_BUY))
if (OrderTicket() > profitorder)
if (OrderClosePrice() == OrderTakeProfit()) {profitorder = OrderTicket();}
}
return(profitorder);
}
int LockSearch(){
lastlock = 0;
for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == 1001001) && (OrderType() == OP_BUY))
{
if (OrderTicket()>lastlock) {lastlock=OrderTicket();}
}
if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == 1001001) && (OrderType() == OP_SELL))
{
if (OrderTicket()>lastlock) {lastlock=OrderTicket();}
}
}
return(0);
}
bool SetOrders(double bs, double sl, double ss, double bl){
bool rez, temp;
rez = true;
if (statecur<=0)
{
if (bs != 0)
{
temp = OpenOrder (OP_BUYSTOP, bs, currentprice+stepseq[step+1]+spred, currentprice+stepseq[step+1]+spred-400*Point, currentprice+stepseq[step+1]+stepseq[step+2], "", magic, Green);
if (!temp) {rez = false;}
}
if (sl != 0)
{
temp = OpenOrder (OP_SELLLIMIT, sl, currentprice+stepseq[step+1], currentprice+stepseq[step+1]+400*Point, currentprice+spred, "", magic, Green);
if (!temp) {rez = false;}
}
if (ss != 0)
{
temp = OpenOrder (OP_SELLSTOP, ss, currentprice-stepseq[step], currentprice-stepseq[step]+400*Point, currentprice-stepseq[step]-stepseq[1]+spred, "", magic, Green);
if (!temp) {rez = false;}
}
if (ss != 0)
{
temp = OpenOrder (OP_BUYLIMIT, bl, currentprice-stepseq[step]+spred, currentprice-stepseq[step]+spred-400*Point, currentprice-stepseq[step]+stepseq[1], "", magic, Green);
if (!temp) {rez = false;}
}
return(rez);
}
if (statecur==1)
{
if (bs != 0)
{
temp = OpenOrder (OP_BUYSTOP, bs, currentprice+stepseq[sПоказано первые 50% кода (символов: 7866)
Что вы получите после оплаты
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? Адрес передаётся вместе с заказом в магазин и сохраняется для связи заказа с оплатой. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.
Стоимость полного кода
787₽
≈ $9.25