Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1291

 
Alexey Viktorov:

Unkompliziert zur Bedingung hinzufügen.

Oder == 0, was wahrscheinlicher ist. Oder besser: Suchen Sie nach dem Namen des Objekts, und wenn es kein solches Objekt gibt, erstellen Sie eines. Und es spielt keine Rolle, ob die Schaltfläche angeklickt wird oder nicht.

Das habe ich, aber
OBJPROP_STATE

Sie ändert sich immer noch, wenn die Schaltfläche angeklickt wird.

Bislang habe ich das Problem folgendermaßen gelöst

   if(ObjectGet("OrderBuy: "+Symbol(),OBJPROP_PRICE1)!=0)
      {
      Sleep(1);
      name="Button 3";
      ObjectSetInteger(0,name,OBJPROP_STATE,true);
      return;
      }
 
Николай Никитюк:

Hallo. 2020.10.28_05:19:00 GMT+3. Ich habe den Indikator LeManTrend_Indicator.mq5 in die vierte Version .mq4 übersetzt.

Haben Sie den Indikator gebaut? Ich habe es gebaut, es scheint dasselbe zu sein - ich muss nur diesen Indikator herunterladenhttps://www.mql5.com/ru/code/9096

BrainTrend1Sig LeManTrend

LeManTrend
LeManTrend
  • www.mql5.com
Индикатор определяет положение тренда на основе текущей цены и максимальных и минимальных цен за три периода.
 
MakarFX:
Das habe ich, aber

ändert sich noch beim Drücken

Bislang habe ich das Problem so gelöst.

Was ist das allgemeine Problem?

 
Alexey Viktorov:

Was ist die allgemeine Aufgabe?

Wenn Sie auf die Schaltfläche klicken, wird das Objekt erstellt und die Schaltfläche erhält
.
ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);

Wenn es ein Objekt gibt, drückt man die Taste und es wird

OBJPROP_STATE,false

und Sie müssen sie so lange beibehalten , wie sich ein Objekt auf der Karte befindet

 
MakarFX:
Wenn die Schaltfläche angeklickt wird, wird das Objekt erstellt und die Schaltfläche erhält
.

Wenn es ein Objekt gibt, drückt man die Taste und es wird

und bleibt so lange wahr , wie sich ein Objekt auf dem Diagramm befindet.

Dann geben Sie einfach die Eigenschaft zurück, bevor Sie zeichnen

   //--- обработка кнопки Создать трендовую линию Buy
   if(sparam=="Button 3")
      {

   if(ObjectGet("OrderBuy: "+Symbol(),OBJPROP_PRICE1)!=0)// Это лучше заменить на if(ObjectFind(ChartID(), "OrderBuy: "+Symbol()) >= 0);
     ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);
      if(trigger_greateB==true)
         {
         Sleep(100);//А это зачем???
         trigger_greateB=false;
         ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);
         //--- Определяем координаты
         ChartXYToTimePrice(0,xn,yn+20,window,dt_1,price_1);
         ChartXYToTimePrice(0,xn+100,yn-20,window,dt_2,price_2);
         //--- Создаем трендовую линию Buy
         TrendCreate(0,("OrderBuy: "+Symbol()),0,dt_1,price_1,dt_2,price_2,ColorUP,0,1,false,true,false,false,0);
         return;
         }
      }
 
Ich tue es ... Sie können im Code sehen
 
MakarFX:
und das tue ich... Sie können im Code sehen

Nicht alles. In meinem Beispiel habe ich hervorgehoben

   if(ObjectGet("OrderBuy: "+Symbol(),OBJPROP_PRICE1)!=0)// Это лучше заменить на if(ObjectFind(ChartID(), "OrderBuy: "+Symbol()) >= 0);
     ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);
Dadurch wird verhindert, dass die Taste beim Drücken hängen bleibt, wenn sich eine Linie auf der Karte befindet.
 
Alexey Viktorov:

Nicht alles. In meinem Beispiel habe ich hervorgehoben

Dadurch wird verhindert, dass die Taste beim Drücken hängen bleibt, wenn sich eine Linie auf der Karte befindet.

Das Problem ist weder... Ich brauche es nur zu kleben, aber OBJ_BUTTON selbst ist klickbar, auch wenn es nichts tut.

Ich muss die Schaltfläche inaktiv machen, und das ist, soweit ich weiß, nicht möglich(

 
MakarFX:

Das ist nicht das Problem ... Ich brauche es nur zu kleben, aber OBJ_BUTTON selbst ist klickbar, auch wenn es nichts tut.

Ich muss die Schaltfläche inaktiv machen, und das ist, soweit ich weiß, nicht möglich(

Was meinen Sie mit "inaktiv" oder "nicht anklickbar"? Und was ist der Sinn davon?

Wenn die Schaltfläche den Eindruck erwecken soll, dass sie angeklickt wurde, setzen Sie statt true in dieser Zeile false ein und löschen Sie die Zeile

         ObjectSetInteger(0,"Button 3",OBJPROP_STATE,true);

das heißt, bevor die Zeile erstellt wird...

 
Alexey Viktorov:

Was meinen Sie mit "nicht aktiv" oder "nicht anklickbar"? Und was ist der Sinn dahinter?

Wenn die Schaltfläche den Eindruck erwecken soll, dass sie angeklickt wurde, setzen Sie statt true in dieser Zeile false ein und löschen Sie die Zeile

das heißt, bevor die Zeile erstellt wird...

OBJPROP_STATE,true

so sieht der gedrückte Knopf aus...

Bemühen Sie sich nicht, es ist nicht mehr relevant.

Ich danke Ihnen.