コーディングのヘルプ - ページ 337

 
alpha24:
こんにちは、Mladenさん。

久しぶりにボリンジャーバンドのコードをお願いします。MAインジケータのMAと同じように、別ウィンドウで表示します。移動平均は表示させる必要はありません。BBは偏差値(0.01)で、EMAかSMAの形にしてください。いつも通り作っていただけませんか?

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

α24

新しいインジケータは必要ありません。

別ウィンドウにあるMAを使い、ボリンジャーバンドを そのサブウィンドウにドラッグし、価格フィールドとして以前のインジケータのデータを選択するだけです。

 
mladen:
アルファ24

新しいインジケータは必要ありません。

任意のマを使用してください...

はい、しかし、問題は小数点以下の偏差のオプションがないことと、同じウィンドウで複数のインディケータを使用しようとすると、前のデータと最初のデータで混乱が生じることです。そこでお願いです。

 

こんにちは。

maillink.dllがbuild > 600で動作しているかどうか、よくわかりません。

maillink.dllをgmxとgooglemailで試してみましたが、いつも"-2 "が返されます。

MailInit(string,int,string,string);関数から いつも "-2" が返ってきます :-(

また、codersguruからのxpMail.dllは私のメタトレーダー口座をクラッシュさせることを試みました。

 
sunshineh:
こんにちは。

maillink.dllがbuild > 600で動作しているかどうか、よくわかりません。

maillink.dllをgmxとgooglemailで試してみましたが、いつも"-2 "が返ってきます。

MailInit(string,int,string,string); 関数からいつも "-2" が返ってきます :-(

私もcodersguruからのxpMail.dllを試しましたが、私のメタトレーダー口座がクラッシュしてしまいます。誰か、1つのEAから2つの異なるメール・アドレスにメールを送るための別の可能性を知りませんか?

文字列部分が問題なのです。

古いメタトレーダー4はANSI文字列を使用していました。それをユニコード文字列に変更したのです。ユニコード文字列は1文字あたり2バイトを使用しますが、ANSIは1文字あたり1バイトしか使用しません。そのため、DLLが読めない文字列を取得することになり、問題が発生しています。

 

正方形の代わりに矢印を置く必要があるインジケータを修正してください。

ファイル:
.........png  141 kb
.......png  30 kb
tro_bias_ez.ex4  12 kb
 
DMNIK:
インジケータを修正する必要がありますあなたは、四角形の代わりに矢印を置く必要があります。

DMNIK

ex4ファイルを編集・変更することができません。

 

わかりやすい説明ありがとうございます。

では、DLLから関数を 呼び出す前に、すべての文字列をunicodeに変更すれば、うまくいくのでしょうか?

ANSIをunicodeに、unicodeをANSIに変更する関数は既にあるのでしょうか?

 

それとも、Unicode-stringが配列になっているからうまくいかないのでしょうか!

もう一つ質問です。

どのように私はより多くの異なる再生することができます

PlaySound-wavファイルを一列に並べることができますか?

私は間にSleep()で試してみましたが、それは動作していません:-)。

 
sunshineh:
それとも、ユニコード文字列が配列になっているから動かないのでしょうか?

もうひとつ質問です。

どうすれば、より多くの異なる

PlaySound-wav ファイルを一列に並べて再生するには?

Sleep()を挟んで試してみましたが、うまくいきません :-(

日向

論理的には同じです:文字の配列です。ただし、ANSI文字が1バイトであるのに対し、Unicode文字は2バイトです。これは、(メタトレーダーとは関係なく)ユニコードが発明されたときに、すべてのさまざまな世界の言語を含めるために行われました。このため、DLLがANSIを期待してユニコード文字列を取得した場合、間違った解釈をすることになります(逆も同様)。あなたのDLLがDLLを使用している場合、新しい文字列を符号なし文字の明示的な配列に変換しなければならず(ANSI DLにアクセス可能にするためにStringToShortArray()を使用)、戻り値は(メタトレーダーにアクセス可能にするために)CharArrayToString()で文字列に変換されるべきです。

________________________

sleepについて :Sleep()関数は インジケータでは無効であり、EAでのみ機能します。従来からそうでした(新しいメタトレーダーの目新しさではありません)。

また、メタトレーダーは1ピースのコードで順次注文を実行しています。つまり、あるサウンドファイルの再生を開始し、終了されることなく、別のサウンドファイルの再生に進むことはできません。また、私が知る限り、彼らはサウンドファイルの時間を制限しています(ターミナルのフリーズを防ぐために - おそらくあなたも気づいているように、アラートや音のようなものは集中管理されています - 異なるチャートが同時にアラートを発行するときに参照してください - それはあなたが見る1つの単一のウィンドウです)。

まだまだ続きますが、メタトレーダーの問題は、非同期ルーチンの実行を適切に解決していないことです(実際、それについて何も考えていません)。

 

最後に決済した注文が利益を生んでいるかどうかを確認 する

こんにちは。

私は、私の最後の3つのクローズした売りまたは買いの取引が有益であったかどうかをチェックし、それに応じて文字列の値を変更したいと思います。

私はこのコードを持っています(MT4)。

for(int i=(OrdersHistoryTotal()-1);i>=0;i--);

{

OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==BUY)

{

//for buy order

if(OrderType()==OP_BUY && OrderProfit()>0) last=1;

if(OrderType()==OP_BUY && OrderProfit()<0) last=0;

}

}

for(int j=(OrdersHistoryTotal()-1);j>=0;j--);

{

OrderSelect(j, SELECT_BY_POS,MODE_HISTORY);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==SELL)

{

//for sell order

if(OrderType()==OP_SELL && OrderProfit()>0) last2=1;

if(OrderType()==OP_SELL && OrderProfit()<0) last2=0;

}

}

しかし、それは私のために動作しません。

どのように私はそれを修正する必要がありますか?

助けてくれてありがとうございます。