Нужен индикатор. - страница 2

 
brici писал(а) >>


-"Судья",почитай внимательно тему что я предложил.


Пробелы после запятых поставьте - прочитаю.
 

Кидаеш на чарт этот скрипт - он организует маркеную линию, двигаеш ее куда надо

//+------------------------------------------------------------------+
//|                                                  _SET_MARKER.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
  double prise=WindowPriceOnDropped();
  string lot=DoubleToStr(GlobalVariableGet("lot"),2);
  if(prise==0){
    Alert("Цена не определена!");
    return;
  }
  ObjectCreate("order",OBJ_HLINE,0,0,0,0,0,0,0);
  ObjectSet("order",OBJPROP_PRICE1,nd(prise));   
  ObjectSet("order",OBJPROP_COLOR,Yellow);
  ObjectSet("order",OBJPROP_STYLE,1);
  ObjectSetText("order","Lot="+lot,9,"Arial",Yellow);
//----
   return(0);
  }
//+------------------------------------------------------------------+
double nd(double in){return(NormalizeDouble(in,Digits));}
потом на линию ордера кидаеш эти скрипты - один для СЛ другой для ТП

//+------------------------------------------------------------------+
//|                                                      _SET_TP.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void start(){
  int stlw=MarketInfo(Symbol(),MODE_STOPLEVEL);
  int spr =MarketInfo(Symbol(),MODE_SPREAD);
  static int ticket;
  double prise=WindowPriceOnDropped();
  if(prise==0){
    Alert("Цена не определена!");
    return;
  }    
  if(ObjectFind("order")!=0){
    Alert("Установите линию Стопа");
    return;     
  }
  for(int i=0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol()){
        if(OrderCloseTime()==0){
          if(MathAbs(OrderOpenPrice()-prise)<spr*Point*2){
            ticket=OrderTicket();
          }  
        }
      }
    }
  }  
  if(ticket<1){
    Alert("Ордер не определен!");
    return;  
  }  
//---- 
  int tick;
  while(!IsStopped()&&tick>=0){ 
  double sl=NormalizeDouble(ObjectGet("order",OBJPROP_PRICE1),MarketInfo(Symbol(),MODE_DIGITS));  
  tick=-1;
  int res;
  for(i=0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol()){
        if(OrderCloseTime()==0){
          if(MathAbs(OrderOpenPrice()-prise)<spr*Point*2){
            tick=OrderTicket();
          }  
        }
      }
    }
  }  
  if(tick<1||ticket!=tick){
    Alert("Ордер не определен!");
    return;  
  }
  if(OrderSelect(tick,SELECT_BY_TICKET)){
    if(NormalizeDouble(OrderStopLoss(),Digits)==sl){
      Alert("Стоп установлен");
      return;
    }
    if(OrderType()==1||OrderType()==3||OrderType()==5){
      RefreshRates();
      if(sl-Bid>stlw*Point){
        if(!OrderModify(tick,OrderOpenPrice(),sl,OrderTakeProfit(),0,White)){
          Alert("Ошибка установки Стоп № ",GetLastError());
          return;
        }else{PlaySound("expert.wav");}
      }
      RefreshRates();
      if(sl-Bid<=stlw*Point){
          Comment("_SET_SL DISTANSE = ",DoubleToStr((sl-Bid)/Point,0));
          RefreshRates();
          if(sl-Bid<=0){
            if(OrderType()==1){
              res=MessageBox("Закрыть ордер № "+tick+"?",Symbol()+"  SET_SL",MB_OKCANCEL);
              if(res==IDCANCEL){return;}
              if(res==IDOK){
              RefreshRates();
              if(!OrderClose(tick,OrderLots(),Ask,spr,Red)){
                Print("Ошибка закрытия №",GetLastError());
              }else{PlaySound("expert.wav");}
              }
            }
          }
      }
    }
    if(OrderType()==0||OrderType()==2||OrderType()==4){
      RefreshRates();
      if(Ask-sl>stlw*Point){
        if(!OrderModify(tick,OrderOpenPrice(),sl,OrderTakeProfit(),0,White)){
          Alert("Ошибка установки Стоп № ",GetLastError());
          return;
        }else{PlaySound("expert.wav");}
      }
      RefreshRates();
      if(Ask-sl<=stlw*Point){
          Comment("_SET_SL DISTANSE = ",DoubleToStr((Ask-sl)/Point,0));
          RefreshRates();
          if(Ask-sl<=0){
            if(OrderType()==0){
              res=MessageBox("Закрыть ордер № "+tick+"?",Symbol()+" SET_SL",MB_OKCANCEL);
              if(res==IDCANCEL){return;}  
              if(res==IDOK){  
              RefreshRates();        
              if(!OrderClose(tick,OrderLots(),Bid,spr,Red)){
                Print("Ошибка закрытия №",GetLastError());
              }else{PlaySound("expert.wav");}
              }
            }
          }          
      }            
    }      
    
  }
    Sleep(200);
    Comment("");
  }
  
  
  

return;}
//+------------------------------------------------------------------+
 
//+------------------------------------------------------------------+
//|                                                      _SET_TP.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void start(){
  int stlw=MarketInfo(Symbol(),MODE_STOPLEVEL);
  int spr =MarketInfo(Symbol(),MODE_SPREAD);
  static int ticket;
  double prise=WindowPriceOnDropped();
  if(prise==0){
    Alert("Цена не определена!");
    return;
  }    
  if(ObjectFind("order")!=0){
    Alert("Установите линию профита");
    return;     
  }
  for(int i=0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol()){
        if(OrderCloseTime()==0){
          if(MathAbs(OrderOpenPrice()-prise)<spr*Point*2){
            ticket=OrderTicket();
          }  
        }
      }
    }
  }  
  if(ticket<1){
    Alert("Ордер не определен!");
    return;  
  }  
//---- 
  int tick;
  while(!IsStopped()&&tick>=0){ 
  double tp=NormalizeDouble(ObjectGet("order",OBJPROP_PRICE1),Digits);  
  tick=-1;
  int res;
  for(i=0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol()){
        if(OrderCloseTime()==0){
          if(MathAbs(OrderOpenPrice()-prise)<spr*Point*2){
            tick=OrderTicket();
          }  
        }
      }
    }
  }  
  if(tick<1||ticket!=tick){
    Alert("Ордер не определен!");
    return;  
  }
  if(OrderSelect(tick,SELECT_BY_TICKET)){
    if(NormalizeDouble(OrderTakeProfit(),Digits)==tp){
      Alert("Тейк установлен");
      return;
    }
    if(OrderType()==0||OrderType()==2||OrderType()==4){
      RefreshRates();
      if(tp-Bid>stlw*Point){
        if(!OrderModify(tick,OrderOpenPrice(),OrderStopLoss(),tp,0,White)){
          Alert("Ошибка установки тейка № ",GetLastError());
          return;
        }else{PlaySound("expert.wav");}
      }
      RefreshRates();
      if(tp-Bid<=stlw*Point){
          Comment("_SET_TP DISTANSE = ",DoubleToStr((tp-Bid)/Point,0));
          RefreshRates();
          if(tp-Bid<=0){
            if(OrderType()==0){
              res=MessageBox("Закрыть ордер № "+tick+"?",Symbol()+"SET_TP",MB_OKCANCEL);
              if(res==IDCANCEL){return;}
              if(res==IDOK){
              RefreshRates();
              if(!OrderClose(tick,OrderLots(),Bid,spr,Red)){
                Print("Ошибка закрытия №",GetLastError());
              }else{PlaySound("expert.wav");}
              }
            }
          }
      }
    }
    if(OrderType()==1||OrderType()==3||OrderType()==5){
      RefreshRates();
      if(Ask-tp>stlw*Point){
        if(!OrderModify(tick,OrderOpenPrice(),OrderStopLoss(),tp,0,White)){
          Alert("Ошибка установки тейка № ",GetLastError());
          return;
        }else{PlaySound("expert.wav");}
      }
      RefreshRates();
      if(Ask-tp<=stlw*Point){
          Comment("_SET_TP DISTANSE = ",DoubleToStr((Ask-tp)/Point,0));
          RefreshRates();
          if(Ask-tp<=0){
            if(OrderType()==1){
              res=MessageBox("Закрыть ордер № "+tick+"?",Symbol()+"SET_TP",MB_OKCANCEL);
              if(res==IDCANCEL){return;}  
              if(res==IDOK){  
              RefreshRates();        
              if(!OrderClose(tick,OrderLots(),Ask,spr,Red)){
                Print("Ошибка закрытия №",GetLastError());
              }else{PlaySound("expert.wav");}
              }
            }
          }          
      }            
    }      
    
  }
    Sleep(200);
    Comment("");
  }
  
  
  

return;}
//+------------------------------------------------------------------+
 
- xrust,что значит (мне выдаёт),Alert("Ордер не определен!");
Спасибо.
 

значит не попал в ордер

 
- Неа.)
 

Это, а у Вас разрешена автоторговля?

 

если у Вас пятизнак, добавьте

  for(int i=0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol()){
        if(OrderCloseTime()==0){
          if(MathAbs(OrderOpenPrice()-prise)<spr*Point*20){
            ticket=OrderTicket();
          }  
        }
      }
    }
  }  
  if(ticket<1){
    Alert("Ордер не определен!");
    return;  
  }
 
xrust >>:

Это, а у Вас разрешена автоторговля?


- Написал в личку.)