[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 492

 

Helfen Sie mir, Horizontalverschiebung
und Vertikalverschiebung
Wenn es auch funktioniert..........cloud

//+------------------------------------------------------------------+
//|                                                Price Channel.mq4 |
//+------------------------------------------------------------------+



#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 DodgerBlue
//---- input parameters
extern int ChannelPeriod = 14;
//---- buffers
double UpBuffer[];
double DnBuffer[];
double MdBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0, DRAW_LINE);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexBuffer(0, UpBuffer);
   SetIndexBuffer(1, DnBuffer);
   SetIndexBuffer(2, MdBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Price Channel("+ChannelPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0, "UpCh");
   SetIndexLabel(1, "DownCh");
   SetIndexLabel(2, "MidCh");
//----
   SetIndexDrawBegin(0, ChannelPeriod);
   SetIndexDrawBegin(1, ChannelPeriod);
   SetIndexDrawBegin(2, ChannelPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Price Channel                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i, counted_bars = IndicatorCounted();
   int    k;
   double high, low, price;
//----
   if(Bars <= ChannelPeriod) 
       return(0);
//---- initial zero
   if(counted_bars < 1)
      for(i = 1;i <= ChannelPeriod; i++) 
          UpBuffer[Bars-i] = 0.0;
//----
   i = Bars - ChannelPeriod - 1;
   if(counted_bars >= ChannelPeriod) 
       i = Bars - counted_bars - 1;
   while(i >= 0)
     {
       high = High[i]; 
       low = Low[i]; 
       k = i - 1 + ChannelPeriod;
       while(k >= i)
         {
           price = High[k];
           if(high < price) 
               high = price;
           price = Low[k];
           if(low > price)  
               low = price;
           k--;
         } 
       UpBuffer[i] = high;
       DnBuffer[i] = low;
       MdBuffer[i] = (high + low) / 2;
       i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
 
splxgf >>:

Можно сделать горячий старт сразу в

init(){

while (true) {

//Вечный кайф

}

Danke splxgf. Ich habe es versucht, aber ... Nun, ich schätze, ich muss dieses Unterfangen auf bessere Zeiten verschieben. Vielleicht interessiert sich ja noch jemand für diese, wie ich finde, nützliche Verfeinerung vieler Experten.

 
hedger писал(а) >>

Danke splxgf. Ich habe es versucht, aber ... Nun, ich schätze, ich muss dieses Unterfangen auf bessere Zeiten verschieben. Und vielleicht interessiert sich ja noch jemand für diese, wie ich finde, nützliche Verfeinerung vieler Experten.


sehen, wie es gemacht werden sollte
int start()
{
while(true)
{
Sleep(5000); // 5 Sekunden Verzögerung bis zur nächsten Iteration
RefreshRates(); // Daten auffrischen
// Rest des Codes. Bedingungen für das Öffnen, Schließen usw.
}
}
 
Djonon >>:

ПОмогите добавить, Сдвиг по горозинтали
и вертикали
Если ещё и работать бутет..........клювоо

extern int Сдвиг_по_горозинтали = 14; //КОЛ-ВО БАРОВ
extern int и_вертикали = 14; //КОЛ-ВО ПУНКТОВ
Dateien:
 
hedger >>:

Для закрытия ордеров я пользуюсь советником JimsCloseOrders, который может закрывать любые ордера по выбору – или профитные, или убыточные, или все подряд, правда пришлось его немного подкорректировать - вот в этих двух строках кода

extern bool CloseOpenOrders = true;

extern bool CloseOrdersWithPlusProfit = false;

false и true надо поменять местами, иначе, если такую настройку выполнять при установке на график, почему-то начинает закрывать все ордера (видимо из-за последовательности выполнения команд программой, но не уверен, не спец).

У меня вопрос к профи.

Требуется, как можно быстрее запустить, например, советника, о котором шла речь выше, но все советники и скрипты начинают действовать с момента поступления первого тика на график. Если же выбранная для установки советника валютная пара оказалась не очень "активной" в этот момент, то потери могут быть значительными.

Существует ли возможность создания "общего" графика для всех валют, или воспользоваться поступающим тикам любой другой пары? Тики же в терминал поступают почти непрерывно. Где их можно перехватить?

Es ist einfach in

int init()
  {
    трали вали..
    start();
  }
Führen Sie bei der Initialisierung sofort die Funktion
start();
Siehe auch Zeckenemulation, aber das ist nicht alles ...

start() ist die Hauptfunktion. In Expert Advisors wird er nach dem nächsten Tick aufgerufen. Bei benutzerdefinierten Indikatoren wird sie während der Neuberechnung nach dem Anhängen des Indikators an den Chart, beim Öffnen des Client-Terminals (wenn der Indikator an den Chart angehängt ist) sowie nach dem nächsten Tick aufgerufen. In Skripten wird es sofort nach dem Anhängen an das Diagramm und der Initialisierung ausgeführt. Wenn im Modul keine start()-Funktion vorhanden ist, kann dieses Modul (Expert Advisor, Skript oder benutzerdefinierter Indikator) nicht gestartet werden.
 
int start()
{
double bid =MarketInfo("GBPUSD",MODE_BID);
double ask =MarketInfo("GBPUSD",MODE_ASK);
double point =MarketInfo("GBPUSD",MODE_POINT);
OrderSend("GBPUSD",OP_BUY,0.01,ask,2,bid-15*Point,bid+15*Point);
Rückkehr;
}

Ich habe dieses Skript aus dem Tutorial genommen; ich wollte sehen, wie es funktioniert; ich habe es kompiliert und gespeichert. Wenn ich es ausführe, schlägt es fehl, warum?
Es gibt keine Fehlermeldungen, es funktioniert einfach nicht...
 
Meine Herren. Guten Abend, meine Damen und Herren. Ich habe absolut kein Glück beim Beherrschen der Sprache. (((((((
Ich versuche, etwas aus einem Haufen von Expert Advisors zu schreiben, aber wenn ich etwas Konkretes schreiben muss, komme ich mir dumm vor...(((
Und jetzt...
Ich möchte die folgende Zeile in Expert Advisor machen:
Ich habe einen Algorithmus der Eröffnung, ich habe Gewinn, und ich will es nach einer bestimmten Zeit zu schließen, egal, was das Ergebnis sein wird,
- das ist, wie es jetzt hinzufügen?????????
Ich möchte diese Zeit im Expert Advisor einstellen können. Ich möchte zum Beispiel, dass das Geschäft nach zwei, drei oder vier Stunden abgeschlossen ist... Das hängt zum Beispiel von der Zeit der Veröffentlichung der Nachrichten ab. Ich denke, Sie verstehen, was ich meine.
Wenn jemand weiß, vielleicht wurden solche Fragen bereits im Forum gestellt, geben Sie mir zumindest den Link. Versucht, das Lehrbuch zu lesen, ein nur Nerven, geschrieben für fortgeschrittene Programmierer, na ja, sicher nicht für die Damen.
Und wenn jemand nicht schwierig ist und es scheint eine Kleinigkeit, dann schreibe die Zeilen, ich klebe sie wenigstens, dann klappt vielleicht etwas.
Eine große Frau bitte.......
 
Magiyanka >>:
Господа. Всем добрый вечер. У меня прям совсем ничего не получается в освоении языка. (((((((

extern int Час=2; //В начало кода
extern int Мин=6;
extern int Slippage  =  25;
extern int STUPID= 12830454;
//В конец кода отдельной функцией
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
void  OrdersCloseByTime(int MagicNumber)
{
   for(int i = 0; i < OrdersTotal(); i++)
   {
      // already closed
      if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES ) == false) continue;
      // not current symbol
      if(OrderSymbol() != Symbol()) continue;
      // order was opened in another way
      if(OrderMagicNumber() != MagicNumber) continue;
      if(Time[0]-OrderOpenTime( )>=Час*60*60+Мин*60){
        if(OrderType() == OP_SELL)
        OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slippage, Red);
        if(OrderType() == OP_BUY)
        OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), Slippage, Blue);
        }
   }
   
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int start()
{
 OrdersCloseByTime(STUPID);//STUPID это мажик номер Вашего советчика
 трали вали ...
Die Positionen für den Feierabend, wo würden Sie sie hinstellen, damit sie nicht verloren geht?!
 
Lim1 >>:

int start()
{
double bid =MarketInfo("GBPUSD",MODE_BID);
double ask =MarketInfo("GBPUSD",MODE_ASK);
double point =MarketInfo("GBPUSD",MODE_POINT);
OrderSend("GBPUSD",OP_BUY,0.01,ask,2,bid-15*Point,bid+15*Point);
Alert (GetLastError());
return;
}

Взял этот скрипт из учебника, хотел посмотреть как он работает - скомпилировал, сохранил. Запускаю - безрезультатно, почему?
Ошибок не выдает, просто не работает...

Versuchen Sie es auf diese Weise.

int start()
{
double bid =MarketInfo("GBPUSD",MODE_BID);
double ask =MarketInfo("GBPUSD",MODE_ASK);
double point =MarketInfo("GBPUSD",MODE_POINT);
int tickkkkkkk=OrderSend("GBPUSD",OP_BUY,1,ask,2,bid-15*Point,bid+15*Point);
if(tickkkkkkk==-1){
 Alert ("Ошибка № "+GetLastError());
 if(GetLastError()==131)
 Alert ("Неправильный объем");
 if(GetLastError()==6)
 Alert ("Нет связи с торговым сервером");
 }
 else Alert ("Все ОК!!!");
return;
}
 
es funktioniert nicht, es schließt nicht pünktlich und das war's