Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Продавай продукты прямо в MetaTrader. Миллионы трейдеров ждут этого!
руслан
66
руслан 2012.11.28 04:43 

Приветствую! Уважаемые программисты и те кто владеют языком написания советников, у меня есть советник, но в него нужно внести небольшое дополнение, - чтобы он совершал сделку после закрытия бара, но сам я такое дополнение сделать не могу т.к. не владею программированием(((. может быть кто то возьмётся помочь?

extern int Correlyciya= 50;
extern int TakeProfit = 300;
extern double Lot = 0.1;
extern double Procent =1.3;
extern bool Martin = true;
extern int Slip=2;
extern int Magic=1;
int start()
{
int New_Time=0;
bool New_Bar=false; // ?????? ???? ???
if(New_Time!=Time[0]) { // ?????????? ?????
New_Time=Time[0]; // ?????? ????? ?????
New_Bar=true;} // ???????? ????? ???
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
ObjectCreate("R",OBJ_LABEL,0,0,0);
ObjectSet("R",OBJPROP_CORNER,2);
ObjectSet("R",OBJPROP_XDISTANCE,10);
ObjectSet("R",OBJPROP_YDISTANCE,10);
ObjectSetText("R","rus-xxx",10,"Arial",Red);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
double opB=2000; double opS=0; double orderProfitbuy=0; double Sum_Profitbuy=0; double orderProfitsel; double Sum_Profitsel; int orderType;
double LotB=Lot;
double LotS=Lot;
int total=OrdersTotal();
int b=0,s=0,n=0;
for(int i=total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol() )
{
n++;
if(OrderType()==OP_BUY && OrderMagicNumber()==Magic)
{
b++;
LotB=OrderLots();
int tikketB=OrderTicket(); double ProfitB=OrderTakeProfit(); double openB=OrderOpenPrice();
if(openB<opB)
{opB=openB;}
}
//---------------------------------
if(OrderType()==OP_SELL && OrderMagicNumber()==Magic)
{
s++;
LotS=OrderLots();
int tikketS=OrderTicket(); double ProfitS=OrderTakeProfit(); double openS=OrderOpenPrice();
if(openS>opS)
{opS=openS;}
}
}
}
}
double max = NormalizeDouble(iHigh(Symbol(),1440,0),Digits);
double min = NormalizeDouble(iLow (Symbol(),1440,0),Digits);
double opp=NormalizeDouble(iOpen(Symbol(),1440,0),Digits);
double cl=NormalizeDouble(iClose(Symbol(),1440,0),Digits);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
if(cl>min)
{
double x=NormalizeDouble(cl*100/min-100,2);
}
//--------------
if(cl<max)
{
double y=NormalizeDouble(cl*100/max-100,2);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

double dis =NormalizeDouble(TakeProfit*Point,Digits);
double spred =NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits);
double CORR=NormalizeDouble(Correlyciya *Point,Digits);
if(Martin==true)
{
if(n>=1){for(int P=100; P>=0; P--)
{
if(n==P&&n>=1) {LotB=LotB*P;}
if(n==P&&n>=1) {LotS=LotS*P;}
}
}
}
if(Martin==false)
{
if(b==1||s==1) {LotB=LotS*1;LotS=LotB*1;}
if(b==2||s==2) {LotS=LotS*1;LotB=LotB*1;}
if(b==3||s==3) {LotS=LotS*1;LotB=LotB*1;}

if(b==4||s==4) {LotB=LotS*3;LotS=LotB*3;}
if(b==5||s==5) {LotS=LotS*3;LotB=LotB*3;}
if(b==6||s==6) {LotS=LotS*3;LotB=LotB*3;}

if(b==7||s==7) {LotB=LotS*6;LotS=LotB*6;}
if(b==8||s==8) {LotS=LotS*6;LotB=LotB*6;}
if(b==9||s==9) {LotS=LotS*6;LotB=LotB*6;}
}
if((b==0&&Procent*(-1)<=y&&s==0&&Close[1]>Open[1]&&New_Bar==true)||(Ask<opB-dis-spred&&b>=1&&s==0&&New_Bar==true)) { OrderSend(Symbol(),OP_BUY ,LotB,Ask,Slip,0,0,"BUY",Magic,0,Green); }
if((s==0&&Procent >=x&&b==0&&Close[1]<Open[1]&&New_Bar==true)||(Bid>opS+dis-spred&&s>=1&&b==0&&New_Bar==true)) { OrderSend(Symbol(),OP_SELL,LotS,Bid,Slip,0,0,"SEL",Magic,0,Green); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
double TPB= NormalizeDouble (openB+spred+TakeProfit*Point,Digits);
double TPS= NormalizeDouble (openS+spred-TakeProfit*Point,Digits);
if(ProfitB==0&&b>=1) { OrderModify(tikketB,openB, OrderStopLoss(),TPB, 0,Blue); }
if(ProfitS==0&&s>=1) { OrderModify(tikketS,openS, OrderStopLoss(),TPS, 0,Blue); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

double nn=0,bb=0;
for(int ui=total-1; ui>=0; ui--)
{
if(OrderSelect(ui,SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY && OrderMagicNumber()==Magic)
{
double op=OrderOpenPrice();
double llot=OrderLots();
double itog=op*llot;
bb=bb+itog;
nn=nn+llot;
double factb=bb/nn;
}
}
}
}
double nnn=0,bbb=0;
for(int usi=total-1; usi>=0; usi--)
{
if(OrderSelect(usi,SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL && OrderMagicNumber()==Magic)
{
double ops=OrderOpenPrice();
double llots=OrderLots();
double itogs=ops*llots;
bbb=bbb+itogs;
nnn=nnn+llots;
double facts=bbb/nnn;
}
}
}
}

for(int uui=total-1; uui>=0; uui--)
{
if(OrderSelect(uui,SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
if(b>=2 && OrderType()==OP_BUY && OrderMagicNumber()==Magic)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),factb+CORR,0,Blue);
}
if(s>=2 && OrderType()==OP_SELL && OrderMagicNumber()==Magic)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),facts-CORR,0,Blue);
}
}
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
}
//+------------------------------------------------------------------+ 

Файлы:
rus-xxx.mq4 7 kb
Sergey Guliaev
2301
Sergey Guliaev 2012.11.28 04:56  

1. На форуме не принято коды в таком виде выкладывать.

2. Если хотите выложить код, воспользуйтесь кнопкой SRC 

3. Если вам реально нужна помощь - вам сюда 

Victor Nikolaev
Модератор
14482
Victor Nikolaev 2012.11.28 05:31  
rus001:

Приветствую! Уважаемые программисты и те кто владеют языком написания советников, у меня есть советник, но в него нужно внести небольшое дополнение, - чтобы он совершал сделку после закрытия бара, но сам я такое дополнение сделать не могу т.к. не владею программированием(((. может быть кто то возьмётся помочь?



Чей труд?
Vladyslav Goshkov
2066
Vladyslav Goshkov 2012.11.28 05:41  
valenok2003:

1. На форуме не принято коды в таком виде выкладывать.

2. Если хотите выложить код, воспользуйтесь кнопкой SRC 

3. Если вам реально нужна помощь - вам сюда 


3 Неверно.

Если реально нужна помощь - то ее здесь, на этом форуме, окажут бесплатно. Только есть разница в понятиях "нужна помощь" и "сделайте работу за меня". Вот во втором случае - действительно туда, куда Вы направили.

А помощь - это когда человек что-то пытается сам сделать, в чем-то самостоятельно разобраться и что-то  то ли не понял, то ли просто пока не получается. А вот если даже не пытается, то или к "букварям" и документации - может все-таки начнет делать сам, или в отдел работа - это если лень все-таки сильнее или просто нет желания учиться.

Надеюсь, разницу пояснил доступно.

Виктор
Модератор
6559
Виктор 2012.11.28 06:23  
VladislavVG:

...Надеюсь, разницу пояснил доступно.

Нам доступно. Но вряд ли новички этим проникаются. К сожалению.

руслан
66
руслан 2012.11.28 06:27  
VladislavVG:


3 Неверно.

Если реально нужна помощь - то ее здесь, на этом форуме, окажут бесплатно. Только есть разница в понятиях "нужна помощь" и "сделайте работу за меня". Вот во втором случае - действительно туда, куда Вы направили.

А помощь - это когда человек что-то пытается сам сделать, в чем-то самостоятельно разобраться и что-то  то ли не понял, то ли просто пока не получается. А вот если даже не пытается, то или к "букварям" и документации - может все-таки начнет делать сам, или в отдел работа - это если лень все-таки сильнее или просто нет желания учиться.

Надеюсь, разницу пояснил доступно.



да, спасибо, вполне доступно))) я воспользовался ссылкой указанной выше, спасибо всем кто откликнулся
Sergey Guliaev
2301
Sergey Guliaev 2012.11.28 06:42  
VladislavVG:


3 Неверно.

Если реально нужна помощь - то ее здесь, на этом форуме, окажут бесплатно. Только есть разница в понятиях "нужна помощь" и "сделайте работу за меня". Вот во втором случае - действительно туда, куда Вы направили.

А помощь - это когда человек что-то пытается сам сделать, в чем-то самостоятельно разобраться и что-то  то ли не понял, то ли просто пока не получается. А вот если даже не пытается, то или к "букварям" и документации - может все-таки начнет делать сам, или в отдел работа - это если лень все-таки сильнее или просто нет желания учиться.

Надеюсь, разницу пояснил доступно.


Согласен, 3 нужно было развернуть, я же написал исходя из контекста.
руслан
66
руслан 2012.11.28 11:10  
в принципе в советнике это всё уже сделано, но есть незначительная ошибка, но я её не вижу и хотел чтобы вы глянули "свежим взглядом" и подсказали в чём она.... не думал что это настолько сложная просьба))) для профи. или у профи не бывает 1-2 лишних минут?)
Рустам
3597
Рустам 2012.11.28 11:25  
rus001:
в принципе в советнике это всё уже сделано, но есть незначительная ошибка, но я её не вижу и хотел чтобы вы глянули "свежим взглядом" и подсказали в чём она.... не думал что это настолько сложная просьба))) для профи. или у профи не бывает 1-2 лишних минут?)

   
Может, мне везёт, может, я просто умею выбирать офлайновый круг общения, но количество нытиков на форумах меня шокирует. Каждый, чью просьбу гуру не исполнил по высшему разряду, обязан поплакаться на то, какие мы, гуру, злые и нехорошие.

Итак, человек на работе получил задание. Для настоящего программиста — пустяк, даже если он в жизни не видел VBA или Excel. Для его выполнения нужно всего лишь за 15 минут ознакомится с базовым (присвоение, условие, цикл) синтаксисом такого простого языка, как Вasic, и задать пару вопросов встроенному хелпу или Гуглу на тему имён функций, реализующих чтение-запись ячеек Excel. Дальше — простейший алгоритм на уровне школьного курса. На всё уйдет в худшем случае час. Что же делает нытик-халявщик? Правильно, идёт искать в интернет готовое решение. Находит его за бабки, оскорбляется до глубины души и отправляется просить подаяния на форумах.

Тут-то и зарыта собака. Вопреки расхожему мнению, большинство гуру благожелательно относятся к новичкам. Мы рады вам помочь в трудных моментах, подсказать нужный раздел в манах, поделиться собственным опытом по поводу того, чего в манах нет, дать общую идею алгоритма, в конце концов. Но не надо нас просить целиком выполнить за вас работу. Именно вы получите за неё деньги, а нам в четырёх случаях из пяти даже «спасибо» поленитесь сказать. Кроме того, не забывайте, что помогаем мы из энтузиазма и интереса, а превращение идеи в конечный результат — это техника, рутина, скукота.

Почему мы не игнорируем халявщиков, а посылаем их к манам и делаем прочие извращённые гнусности? Во-первых, потроллить нытика-халявщика иногда весело. Во-вторых, бывает плохое настроение, хочется отвлечься, ты ищешь интересный вопрос, видишь очередного халявщика и срываешься. В-третьих, если такому не ответить, то он создаст ещё пяток однотипных тем, будет их регулярно апать («НУ ЧО НИКТО НЕ ЗНАЕТ?»), используя волшебные слова «СРОЧНА!!!», «ХЕЛП!!!», «ПАМАГИТЕ!!!» — и в итоге уйдёт с уверенностью, что на этом форуме все дураки, и никто не знает решения его «сверхсложной» проблемы.

Некоторый процент удаётся перевоспитать. Они учатся корректно задавать вопросы, сами начинают читать мануалы и выполнять рутину, даже «спасибо» иногда говорят — мелочь, а приятно. Жаль, процент небольшой. Но остальных мне не жаль: качество важней количества. 

Комбинатор
15888
Комбинатор 2012.11.28 11:34  
FAQ:
Я смотрю история действительно цепляет ) спасибо Vinin'у за первосцылку.
руслан
66
руслан 2012.11.28 11:38  
я Вас отлично понимаю, честно. и у Вас получилось всё отлично сформулировать, только это не про меня))) единственное что меня касается так это то, что самому мне это не по силам, к сожалению или радости я родился в далёкие времена когда об информатике и компах вообще не слышали) и мне очень сложно научиться что либо программировать, хотя я пробывал изучить это, но видимо не моё... и потому я обратился за помощью, т.к. знаю что советник готовый, но есть лишь незначительная ошибка по которой он не выполняет функцию открывать сделки лишь при закрытии бара, возможно и вероятнее всего эту ошибку видно невооруженным взглядом, нол увы, я её не вижу((( так стоит ли упрекать людей которые обратились за помощью в такой мелочи?
/ /123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий