При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
Существуют 11 видов событий, которые можно обрабатывать с помощью функции предопределенной функции OnChartEvent(). Для пользовательских событий предусмотрено 65535 идентификаторов в диапазоне от CHARTEVENT_CUSTOM до CHARTEVENT_CUSTOM_LAST включительно. Для генерации пользовательского события необходимо использовать функцию EventChartCustom...
//+------------------------------------------------------------------+//| This piece of code will copy any text we want to the clipboard |//+------------------------------------------------------------------+/*
#import "kernel32.dll"
int GlobalAlloc(int Flags, int Size); long GlobalAlloc(uint flags,ulong bytes);
int GlobalLock(int hMem); long GlobalLock(HANDLE mem);
int GlobalUnlock(int hMem); int GlobalUnlock(HANDLE mem);
int GlobalFree(int hMem); long GlobalFree(HANDLE mem);
int lstrcpyW(int ptrhMem, string Text);
#import
#import "user32.dll"
int OpenClipboard(int hOwnerWindow); int OpenClipboard(HANDLE wnd_new_owner)
int EmptyClipboard(); int EmptyClipboard(void);
int CloseClipboard(); int CloseClipboard(void);
int SetClipboardData(int Format, int hMem); long SetClipboardData(uint format,HANDLE mem);
#import
*/#define GMEM_MOVEABLE 2#define CF_UNICODETEXT 13#include <WinAPI\winuser.mqh>
#include <WinAPI\winbase.mqh>
// Copies the specified text to the clipboard, returning true if successfulbool CopyTextToClipboard(string Text)
{
bool bReturnvalue = false;
long wnd_new_owner=0 ;
// Try grabbing ownership of the clipboard if (OpenClipboard(wnd_new_owner) != 0) {
// Try emptying the clipboardif (EmptyClipboard() != 0) {
// Try allocating a block of global memory to hold the text int lnString = StringLen(Text);
long hMem = GlobalAlloc(GMEM_MOVEABLE, lnString * 2 + 2);
if (hMem != 0) {
// Try locking the memory, so that we can copy into itlong ptrMem = GlobalLock(hMem);
if (ptrMem != 0) {
// Copy the string into the global memory
lstrcpyW(ptrMem, Text);
// Release ownership of the global memory (but don't discard it)
GlobalUnlock(hMem);
// Try setting the clipboard contents using the global memoryif (SetClipboardData(CF_UNICODETEXT, hMem) != 0) {
// Okay
bReturnvalue = true;
} else {
// Failed to set the clipboard using the global memory
GlobalFree(hMem);
}
} else {
// Meemory allocated but not locked
GlobalFree(hMem);
}
} else {
// Failed to allocate memory to hold string
}
} else {
// Failed to empty clipboard
}
// Always release the clipboard, even if the copy failed
CloseClipboard();
} else {
// Failed to open clipboard
}
return (bReturnvalue);
}
voidOnStart(){
bool re = false ;
re =CopyTextToClipboard("11111");
printf(re);
}
どうしたんだろう?未決済の注文のみを考慮させるにはどうしたらよいですか?このコードは、私が必要としない部分的に閉じた注文もキャプチャします。
OBJ_RECTANGLE オブジェクトが座標ではなく、価格と時間でリンクされているのですが。
И?その通りです。タイムラインを圧縮すると、矩形も圧縮されます。論理的か?ロジックで悩んでいませんか?
グラフの推移を把握する。
И?そうなんです。タイムラインを縮小すると、矩形も縮小されます。それは論理的か?ロジックで悩んでいませんか?
グラフの推移を追う。
どっちを掘ればいいのか教えてください。
どちらにするか教えてください。
私の記事から引用したのは、まさに私が指示した通りです。
目的に応じて、いくつかのタイプのオブジェクトを使用することができます。今使っているものは、絶対に間違っている。
そうすると、いくつかの選択肢が残ります。そして、そのすべてがここにあります。読んで、わからないことを聞けばいいだけです。
どちらにするか教えてください。
上で紹介したオブジェクトと、これです。
上で紹介したオブジェクトと、これです。
私の問題を解決するためのオブジェクトが見当たらないのですが、どうでしょうか?OBJ_TEXTが フレームをサポートしていなければ!?
私の問題を解決するためのオブジェクトが見当たらないのですが、どうでしょうか?フレームに対応していればOBJ_TEXTは 別!?
Rectangle_labelは必要なものです。
しかし、ChartTimePriceToXYで時間、価格を座標に変換しようとしたのです。正しい場所に描画できたのですが、やはりチャートをスクロールすると、その場所に立ってしまい、私にはうまくいきません。
BitMapも同じ話で、座標でくっついているため、チャートをスクロールすると全てのBitMapがその場に立ってしまうので、私には合いません。
では、全体的な質問ですが、上に書いた私のアイデアを実現することは可能なのでしょうか?
Rectangle_labelは必要なものです。
しかし、ChartTimePriceToXYで時間、価格を座標に変換しようとしたのです。正しい場所に描画できたのですが、やはりチャートをスクロールすると、その場所に立ってしまい、私にはうまくいきません。
BitMapも同じ話で、座標でくっついているため、チャートをスクロールすると全てのBitMapがその場に立ってしまうので、私には合いません。
では、全体的な質問ですが、上に書いた私のアイデアを実現することは可能なのでしょうか?
はい。
OnChartEvent()のヘルプリンクはこちらです。
皆さんこんにちは、MT5でlstrcpyW()に問題があります。
lstrcpyW () は winbase.mqh で定義されています:string lstrcpyW(ushort &string1[],const string string2);
このコードは文字列をクリップボードにコピーしています。