Так что-ли?и снова со старой просьбой, что там так трудно доработать хоть объясните, надо что бы закрывала сделку по обратному сигналу и открывала новую а не как там пока не сработает стоп так и весит хотя уже сигнал в другую сторону, помогитеlease: наконец то уже:facepalm:
Приветмствую!
большая просьба. удалить из кода две линии из трех , оставив одну.
Два образца. В первом случае синию, во втором красную, оставить!
Для того, кто знает, минутное дело, а я никак :facepalm:
Вот скрин и индюк.
Зачем из кода удалять? Если хочешь чтобы не было видно на экране, установи цвет ненужной линии такой как у тебя фон.
В приведенной части кода закомментирована синяя линия, т.е. она не будет отображаться.Это я знаю. Мне нужно для "солянки", чтобы не путаться при совмещении.
int init()
{
string short_name;
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
// SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
SetIndexBuffer(0,Line1Buffer);
// SetIndexBuffer(1,Line2Buffer);
SetIndexBuffer(2,Line3Buffer);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
short_name="MBB_call("+PeriodRSI+","+StepSizeFast+","+StepSizeSlow+")";
IndicatorShortName(short_name);
SetIndexLabel(0,"RSI");
// SetIndexLabel(1,"SRSI fast");
SetIndexLabel(2,"SRSI slow");
SetIndexDrawBegin(0,1);
// SetIndexDrawBegin(1,2);
SetIndexDrawBegin(2,2);
return(0);
}
Вельми понеже!
Спасибо большое, понял, могу хоть одну линию заблокировать ,хоть две.
Вообще то я хотел вообще стереть две ненужных из кода , чтобы при дальнейшей работе указывать не линию в индикаторе( а это все равно придется, как я понимаю), а сам индикатор, имеющий одну линию, красную, или синию, по варианту.
Если это сложно, не нужно, потому что идея спорная, так справлюсь.
========
Гложут смутные сомненья. Если убрать из кода две линии, может индикатор перестанет работать, поскольку одна линия потеряет смысл?
#property show_inputs
//--------------------------------------------------------------------
extern int Takeprofit = 0, //тейкпрофит ордеров
Delta = 10,
Candle = 1; //по какой свече ставим ордера (0- текущая 1- прошлая....)
extern double Lot = 0.1; //лот
extern int Magic = 0; //уникальный номер ордеров этого советника, если 0 то ведет все ордера, в том числе выставленные вручную
//--------------------------------------------------------------------
int start()
{
double SL,TP;
double StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
double Price = NormalizeDouble(High[Candle]+(MarketInfo(Symbol(),MODE_SPREAD)+Delta)*Point,Digits);
if(Price>=Ask+StopLevel)
{
if (Takeprofit!=0) TP = NormalizeDouble(Price + Takeprofit * Point,Digits); else TP=0;
SL = NormalizeDouble(Low[Candle]-Delta*Point,Digits);
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,Price,0,SL,TP,"StopOrders",Magic,0,CLR_NONE)==-1) Print("Error ",GetLastError());
}
Price = NormalizeDouble(Low[Candle]-Delta*Point,Digits);
if(Price<=Bid-StopLevel)
{
if (Takeprofit!=0) TP = NormalizeDouble(Price - Takeprofit * Point,Digits); else TP=0;
SL = NormalizeDouble(High[Candle]+Delta*Point,Digits);
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,Price,0,SL,TP,"StopOrders",Magic,0,CLR_NONE)==-1) Print("Error ",GetLastError());
}
return(0);
}
//--------------------------------------------------------------------
Добрый вечер всем форумчанам. Помогите доработать скрипт. Необходимо добавить возможность указывать по каким парам выставлять отложенные ордера. Заранее всем спасибо.
PHP:#property show_inputs //-------------------------------------------------------------------- extern int Takeprofit = 0, //тейкпрофит ордеров Delta = 10, Candle = 1; //по какой свече ставим ордера (0- текущая 1- прошлая....) extern double Lot = 0.1; //лот extern int Magic = 0; //уникальный номер ордеров этого советника, если 0 то ведет все ордера, в том числе выставленные вручную //-------------------------------------------------------------------- int start() { double SL,TP; double StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point; double Price = NormalizeDouble(High[Candle]+(MarketInfo(Symbol(),MODE_SPREAD)+Delta)*Point,Digits); if(Price>=Ask+StopLevel) { if (Takeprofit!=0) TP = NormalizeDouble(Price + Takeprofit * Point,Digits); else TP=0; SL = NormalizeDouble(Low[Candle]-Delta*Point,Digits); if (OrderSend(Symbol(),OP_BUYSTOP,Lot,Price,0,SL,TP,"StopOrders",Magic,0,CLR_NONE)==-1) Print("Error ",GetLastError()); } Price = NormalizeDouble(Low[Candle]-Delta*Point,Digits); if(Price<=Bid-StopLevel) { if (Takeprofit!=0) TP = NormalizeDouble(Price - Takeprofit * Point,Digits); else TP=0; SL = NormalizeDouble(High[Candle]+Delta*Point,Digits); if (OrderSend(Symbol(),OP_SELLSTOP,Lot,Price,0,SL,TP,"StopOrders",Magic,0,CLR_NONE)==-1) Print("Error ",GetLastError()); } return(0); } //--------------------------------------------------------------------
//--------------------------------------------------------------------
extern string para="EURUSD";
Зачем из кода удалять? Если хочешь чтобы не было видно на экране, установи цвет ненужной линии такой как у тебя фон.
//============================================== покупаем 1 ордер ==============================================
if ((Signal == 1) && (totalB == 0)) {
if (Signal == 1 ) ticket = OPENORDER ("Buy")&& PlaySound(OpenOrderSound);
if (Signal == 1 ) ticket = OPENORDER ("BuyStop");
if (ticket < 0) {
BarControl_0 = False;
return (0);
}
BarControl_0 = BarControl;
}
//=============================================== продаем 1 ордер =============================================
if ((Signal == -1) && (totalS == 0)) {
if (Signal == -1 ) ticket = OPENORDER ("Sell")&& PlaySound(OpenOrderSound);
if (Signal == -1 ) ticket = OPENORDER ("SellStop");
if (ticket < 0) {
BarControl_0 = False;
return (0);
}
BarControl_0 = BarControl;
}
return (0);
}
//====================================== выставление ордеров ===================================================
int OPENORDER(string ord)
{
int error;
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, iLotsB, NormalizeDouble (Ask,Dig), slip, 0, 0, "Dubl Full",MagicNumberB,5,Blue);
if (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, iLotsB, NormalizeDouble (Ask+FirstPipStep*Point,Digits), slip, 0, 0, "Dubl Full",MagicNumberB,5,Blue);
if (ord=="Sell" ) error=OrderSend(Symbol(),OP_SELL, iLotsS, NormalizeDouble (Bid,Dig), slip, 0, 0, "Dubl Full",MagicNumberS,5,DeepPink);
if (ord=="SellStop" ) error=OrderSend(Symbol(),OP_SELLSTOP, iLotsS, NormalizeDouble (Bid+FirstPipStep*Point,Digits), slip, 0, 0, "Dubl Full",MagicNumberS,5,DeepPink);
if (error==-1) ShowERROR(error,0,0);
return (error);
}
//=================================== пересчитываем ТП БАЙ ордеров =========================================
void RecalculationB() {
double AveragePrice_B = 0;
double PriceTarget_B = 0;
double CountB = 0;
int ErrorB = 0;
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberB) {
if (OrderType() == OP_BUY ) {
AveragePrice_B += OrderOpenPrice() * OrderLots();
CountB += OrderLots();
}
}
}
}
if (totalB > 0) AveragePrice_B = NormalizeDouble(AveragePrice_B / CountB, Dig);
if (NewOrdersPlacedB) {
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberB) {
if (OrderType() == OP_BUY) {
PriceTarget_B = AveragePrice_B + Take_Profit * Point;
StopperB = AveragePrice_B - StopLoss * Point;
flagB = TRUE;
}
}
}
}
}
if (NewOrdersPlacedB) {
if (flagB == TRUE) {
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberB) {
if (OrderType() == OP_BUY ) {
ErrorB = OrderModify(OrderTicket(), AveragePrice_B, StopperB, PriceTarget_B, 0, Blue);
if (ErrorB == -1) ShowERROR (ErrorB,0,0);
NewOrdersPlacedB = FALSE;
}
}
}
}
}
}
}
//=================================== пересчитываем ТП СЕЛЛ ордеров ========================================
void RecalculationS() {
double AveragePrice_S = 0;
double PriceTarget_S = 0;
double CountS = 0;
int ErrorS = 0;
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberS) {
if (OrderType() == OP_SELL ) {
AveragePrice_S += OrderOpenPrice() * OrderLots();
CountS += OrderLots();
}
}
}
}
if (totalS > 0) AveragePrice_S = NormalizeDouble(AveragePrice_S / CountS, Dig);
if (NewOrdersPlacedS) {
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberS) {
if (OrderType() == OP_SELL) {
PriceTarget_S = AveragePrice_S - Take_Profit * Point;
StopperS = AveragePrice_S + StopLoss * Point;
flagS = TRUE;
}
}
}
}
}
if (NewOrdersPlacedS) {
if (flagS == TRUE) {
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberS) {
if (OrderType() == OP_SELL) {
ErrorS = OrderModify(OrderTicket(), AveragePrice_S, StopperS, PriceTarget_S, 0, Red);
if (ErrorS == -1) ShowERROR (ErrorS,0,0);
NewOrdersPlacedS = FALSE;
}
}
}
}
}
}
}
Если возможно,то вот индюк,буду благодарен.Минимум и Максимум сделать -100 и 100 чтоб бегал в этих зонах))
Разве, что так, но порой убегает за зоны +/-100, тогда можно отключить закрепление зон:
Разве, что так, но порой убегает за зоны +/-100, тогда можно отключить закрепление зон:
Да, при значении 1 - не отображается, фиг его знает почему, но данный параметр отвечает за сигнальную линию.не то у нас получилось нужно что бы настройки были как у штатного MACD,просто мне последний параметр нужна 1 а тут 9 меняю на один он на график не ставится (((
а здесь сигнальная линия не отображается, так в чем проблема?вообщем подобная картинка должна быть с+/-100 уровнями))