[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 313

 
hoz:

この関数にトレンド パラメータが渡されると、その瞬間のメイントレンドと思われるものを渡す役割を果たすのですが、このパラメータを元に計算するようにするにはどうしたらいいでしょうか。

つまり、trend==down であればループ内の関数は今のようになり、trend==up であればループ内のOpen[i]Close[i] を入れ替えて、条件を満たすようにしました。なぜなら、その場合、バーの終値は始値より低くなり、その差はマイナスとなるからです。


bool trend;

if ((2*trend-1)*Δ=>const) cnt++;
if ((2*trend-1)*Δ<const) cnt=0;
この場合、2*trend-1+1 と -1 を取り、つまりトレンド=true ならば上昇、トレンド=false ならば下降となり、Δはそれぞれ正しい符号または間違った符号 を取ることになります。これは、数学がifに置き換わる一例に過ぎない。
 

gyftoさん、キットのテストスクリプトは動作していますか?

私ならそうします。

//в шапке
#include <SharedMemoryMT4.mqh>
//в инит. Создание и открытие не обязательно. Эти функции для ускорения работы с памятью.
MemoryCreate(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));
// Вариант более быстрый, чем выше:
MemoryCreateProjection(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));

//в деинит
MemoryCloseName(1, "", "ind");
//в старт вместо 
for(; i<Σ; i++) MemoryWriteInt(1, "", -1, "ind", i * 4, iBars(sn, 1));//ind[i]=iBars(sn, 1);
#property show_inputs
#include <SharedMemoryMT4.mqh>
extern int x;//сколько секунд назад с данного момента прикрепления смотрим значения TOLHCV

int init()
  {
//   MemoryOpen(1, "", -1, "ind"); // Это не требуется.
   return(0);
  }
int start()
  {
   //MemoryReadInt(1, "", -1, "ind", i) это ind[i], GlobalVariableGet("final") это последний элемент в массиве, а ф-ла выглядит так: n=ind[final]-ind[final-x]+1
   int n=MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final"))-MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final")-x)+1;
   Alert(TimeToStr(TimeCurrent(),TIME_SECONDS), ": Time=", TimeToStr(Time[n], TIME_SECONDS), ", Open=", Open[n], ", High=", High[n], ", Low=", Low[n], ", Close=", Close[n], ", Volume=", Volume[n]);
   return(0);
  }

あとは正解です。データ転送プロトコルのみには手を出しませんでした。

メモリの 作成、オープン、割り当ては 任意です。これらの機能は、メモリの取り扱いを高速化するためのものです。最も単純なライブラリ操作の 場合、読み込みと書き込みの機能だけが必要です。あとは図書館がやってくれる。しかも、書く前に読むことができる。要求されたサイズのメモリが確保され、この関数は0を返します。まだ何もないのですから。

 

Zhunko そうじゃないと思います。Comment() は出力せず、ログに、書き込むだけです。

15:51:13 Check_SharedMemoryMT4.dll AUDUSD,M1 inputs: Area=1; InitPrefix=""; UserGlobal=25; UserTerminal=50; UserWindow=100; CheckWriteRead=false; CheckWrite=false; CheckRead=false; CheckGeneral=false
CheckProjection=false; CheckClose=false; NamePrefix="Check"; NameMemory0="CheckMemory0"; NameMemory1="CheckMemory1"; NameMemory2="CheckMemory2"; NameMemory3="CheckMemory3"; NameMemory4="Memory4"
Index=-1; StartByte=0; MemorySize=64000; bValue=true; cValue=123; ucValue=255; shValue=32100; ushValue=65535; nValue=2147012345; fValue=1234.56789012; dValue=1234.56789012; sValue0="Контроль = 1234.56789"
sValue1="Контроль = 9876.54321"; sValue2="Привет мир!!!"; sValue3="Миру мир!"; sValue4="Неправильное  имя";

1行にまとまっているので、ここに移動させれば、画面の幅が異常に広くなることはないですね。

 
gyfto:

Zhunko そうじゃないと思います。Comment()は出力せず、ログに、書き込むだけです。

1行にまとまっているので、ここに移動させれば、画面の幅が異常に広くなることはないですね。

動画をご覧ください。全く同じにする。うまくいかなければ、何とかする。私には効果的です。
 
多分、間抜けなミスのコンテストで優勝するところだと思います。ADXBarsのGV変数が宣言されていなかったので、「メソッドエラー」と書きました。さらに、イントの境界線にアライメントがなかった。しかし、アラートは、アライメントの有無にかかわらず、すべてゼロを出力することに変わりはありません。まずはビデオを見て、自分で考えてみようと思います。失敗したら、一緒に考えよう。
 

TarasBY artmedia70 hoz

役員の皆さん、ありがとうございました。

 
CYBOPOB:

TarasBY artmedia70 hoz

役員の皆さん、ありがとうございました。

自分で撃ったのか?:)))
 
artmedia70:
何、自分で撃ったのか?:)))


2回目 8-[.
 

こんにちは!このトピックについて助けてください。

https://www.mql5.com/ru/forum/144634

ありがとうございました。

 

自分もクソエラーが出た。実は、論理はまったくないのです。https://book.mql4.com/ru/appendix/limits に従って保留注文を出すには、開始価格がBid(売り)より下かAsk(買い)より上である必要があります。要求されたとおりにしています。

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);

   if (ND(OOP) > Ask)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
       lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

時々、0と 130の エラーが出ます。130は ストップが違うというエラーですが、これは修正時に発生する可能性があり、注文開始時には発生しません。

スクリーンショットでは、pr 機能を使って表示された状況とプリントをご紹介しています。

ストップミスエラー

このバグを取り除く方法をアドバイスしてください。このエラーには本当にうんざりしています。論理的には、全く対象外です。