В качестве рекламы - сделал.
Посмотреть вложение 165766
Если что обращайтесь:
Советники скрипты индикаторы MT4 MT5 на заказ
Сердечно благодарю Извиняюсь,что с опозданием - уезжал на неделю не до компьютеров было
В качестве рекламы - сделал.
Посмотреть вложение 165766
Если что обращайтесь:
Советники скрипты индикаторы MT4 MT5 на заказ
А Вы настырный, я таких уважаю, сам такой же. Предлагаю Вам свою дружбу. Завтра из больнички вечером сбегу, заходите в личку, обсудим и решим... С уважением Алексей.
Попробуйте в таком виде. Добавил Вам два отступа, для открытия ордеров, а то индик все время отодвигает прямую тренда и можно остаться без позиции, а на пробитии переворачивается. Да и не забудьте индик должен быть прикреплён к графику... Нужно обязательно проверять условие фхода хоть на демке... Если будет прфит, отпишитесь, может что добавить нужно будет...
Не просто вставить. Комиссию и своп нужно посчитать, поделить на стоимость пункта помноженную на лот, т.е. расчитать за сколько пунктов открытые лоты погасят комиссию и своп. А потом все это дело прибавить к средней цене.Здравствуйте господа программисты. Помогите разобраться скодом
Подскажите, в каком месте необходимо вставить этот кусок кода
чтобы корректно работалPHP:+ OrderSwap() + OrderCommission()
void start() {
int b,s;
double price,price_b,price_s,lot,lot_s,lot_b,SLb,SLs;
double CS_buy,CS_sell;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()) {
price = OrderOpenPrice();
lot = OrderLots();
if (OrderType()==OP_BUY ) {
price_b = price_b+price*lot;
b++;
lot_b=lot_b+lot;
CS_buy=CS_buy+OrderCommission()+OrderSwap();
}
if (OrderType()==OP_SELL) {
price_s = price_s+price*lot;
s++;
lot_s=lot_s+lot;
CS_sell=CS_sell+OrderCommission()+OrderSwap();
}
}
}
ObjectDelete("SLb");
double tick_value=MarketInfo(Symbol(),MODE_TICKVALUE);
if (b!=0) {
SLb = price_b/lot_b;
SLb = SLb - (CS_buy/(tick_value*lot_b))*Point;
ObjectCreate("SLb",OBJ_ARROW,0,Time[0],SLb,0,0,0,0);
ObjectSet ("SLb",OBJPROP_ARROWCODE,6);
ObjectSet ("SLb",OBJPROP_COLOR, Navy);
}
ObjectDelete("SLs");
if (s!=0) {
SLs = price_s/lot_s;
SLs = SLs + (CS_sell/(tick_value*lot_s))*Point;
ObjectCreate("SLs",OBJ_ARROW,0,Time[0],SLs,0,0,0,0);
ObjectSet ("SLs",OBJPROP_ARROWCODE,6);
ObjectSet ("SLs",OBJPROP_COLOR, Maroon);
}
Не просто вставить. Комиссию и своп нужно посчитать, поделить на стоимость пункта помноженную на лот, т.е. расчитать за сколько пунктов открытые лоты погасят комиссию и своп. А потом все это дело прибавить к средней цене.
как то так )Спасибо большое. Все работает замечательно. У меня еще одна просьба по этому коду. Как сделать чтобы отображался общий безубыток, с учетом и бай и сел ордеров.
void start() {
int b,s;
double price,price_b,price_s,lot,lot_s,lot_b,SLb,SLs;
double CS_buy,CS_sell;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()) {
price = OrderOpenPrice();
lot = OrderLots();
if (OrderType()==OP_BUY ) {
price_b = price_b+price*lot;
b++;
lot_b=lot_b+lot;
CS_buy=CS_buy+OrderCommission()+OrderSwap();
}
if (OrderType()==OP_SELL) {
price_s = price_s+price*lot;
s++;
lot_s=lot_s+lot;
CS_sell=CS_sell+OrderCommission()+OrderSwap();
}
}
}
ObjectDelete("SLb");
double tick_value=MarketInfo(Symbol(),MODE_TICKVALUE);
double delta_lot=MathAbs(lot_b-lot_s);
if(b!=0 || s!=0) {
SLb= (price_b-price_s)/(lot_b-lot_s);
CS_buy=CS_buy+CS_sell;
if(lot_b>lot_s) {
SLb = SLb - (CS_buy/(tick_value*delta_lot))*Point;
}
if(lot_b<lot_s) {
SLb = SLb + (CS_buy/(tick_value*delta_lot))*Point;
}
ObjectCreate("SLb",OBJ_ARROW,0,Time[0],SLb,0,0,0,0);
ObjectSet ("SLb",OBJPROP_ARROWCODE,6);
ObjectSet ("SLb",OBJPROP_COLOR, clrGreen);
}
}
как то так )
PHP:void start() { int b,s; double price,price_b,price_s,lot,lot_s,lot_b,SLb,SLs; double CS_buy,CS_sell; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()) { price = OrderOpenPrice(); lot = OrderLots(); if (OrderType()==OP_BUY ) { price_b = price_b+price*lot; b++; lot_b=lot_b+lot; CS_buy=CS_buy+OrderCommission()+OrderSwap(); } if (OrderType()==OP_SELL) { price_s = price_s+price*lot; s++; lot_s=lot_s+lot; CS_sell=CS_sell+OrderCommission()+OrderSwap(); } } } ObjectDelete("SLb"); double tick_value=MarketInfo(Symbol(),MODE_TICKVALUE); double delta_lot=MathAbs(lot_b-lot_s); if(b!=0 || s!=0) { SLb= (price_b-price_s)/(lot_b-lot_s); CS_buy=CS_buy+CS_sell; if(lot_b>lot_s) { SLb = SLb - (CS_buy/(tick_value*delta_lot))*Point; } if(lot_b<lot_s) { SLb = SLb + (CS_buy/(tick_value*delta_lot))*Point; } ObjectCreate("SLb",OBJ_ARROW,0,Time[0],SLb,0,0,0,0); ObjectSet ("SLb",OBJPROP_ARROWCODE,6); ObjectSet ("SLb",OBJPROP_COLOR, clrGreen); } }
Только вот если суммы лотов противоплолжных направлений равны то выдаст деление на ноль и зависнет.
Надо проверять этот момент if (lot_b!=lot_s)..... или if (delta_lot!=0).....
А в каком месте кода это нужно вставить??
Ребятушки экзешка нужна,спасибо))
Поправил...Уважаемые программеры!
Буду признателен в пределах разумного за правку кода под 646 билд вот этого сова!
Заранее спасибо!