[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 8

 
うんうん、ありがとうございます。
 

こんにちは。

週末の私の労作を紹介します。断罪のために提出します。

int start()
{
//----
double CCI =NormalizeDouble(iCCI(NULL, 0,Period,PRICE_CLOSE,1), Digits);

if(CCI[1] > -100)
if(CheckOrders(OP_SELL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("買い注文が開かれていません。Error #", GetLastError());
}

if(CCI[1] < 100)
if(CheckOrders(OP_BUY))
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Print("売り注文が開かれていません。Error #", GetLastError());
}

//----
return(0);
}

これはCCIのコードの一部です。要するに、底値のcci>-100は買い、上値のcci<100は売りという単純なものです。


int start()
{
//----
double RSI = NormalizeDouble(iRSI(NULL, 0,Period,PRICE_CLOSE,1), Digits);

if(RSI[1] > 70)
if(CheckOrders(OP_SELL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("買い注文が開かれていません。Error #", GetLastError());
}

if(RSI[1] < 30)
if(CheckOrders(OP_BUY))
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Print("売り注文が開かれていません。Error #", GetLastError());

//----
return(0);
}

RSIのコードの部分は同じで、70で買い、30で売る


int start()
{
//----
double WPR = NormalizeDouble(iWPR(NULL, 0,Period,1), Digits);

if(WPR[1] > -80)
if(CheckOrders(OP_SELL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("買い注文が開かれていません。Error #", GetLastError());
}

if(WPR[1] < -20)
if(CheckOrders(OP_BUY))。
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Print("売り注文が開かれていません。Error #", GetLastError());
}

//----
return(0);
}

この部分は、WPR(ウィリアムズ・インジケータ)の買い-80、売り-20のコードです。

この中で取引条件に迷ったら質問します......ありがとうございました............。

 

こんにちは、尊敬するプロフェッショナルの皆さん、そしてそれだけではありません。

私の意見では、御社のウェブサイトは、初心者がMQL4を学ぶのに最も適していると思います。

質問すると、専門家から総合的な回答が得られます。まさにエキスパート。でも、初心者は初心者です。その本質を理解するまで、何度も何度も問い直すのである。だから、何かを学びたいという欲求を持った小学生にふるまう......彼ら(学生)は、オタクというほど頭が良くないのかもしれないが、欲求があるのなら歓迎すべきだと思う......学びたいんだ......。

koreyさん、grani77さん、vininさん、YuraZさん、figarOさん、BARSさんの回答やコメントがとてもよかったです。知的でインテリジェント。もし許されるなら、通信はメールアドレスに転送することができます....................事前に感謝します。

 
igrok2008 писал(а)>>で、オタクほど賢くない。

まいったなぁ。"ニワトリはいくら教えても賢くならない、ただ知っていることが多いだけ "と思っていました。

 
Mathemat >> :

まいったなぁ。"ニワトリはいくら教えても賢くならない、ただ覚えるだけだ "と思ったんです。

なぜニワトリに教えるのか?鳥ですらない(諺によれば)・・・。 しかし、人間は考えるからこそ、鶏とは違うのだ。あるいは、"長く生きて、長く学ぶ "とも言えるでしょう。

そして、まだ私は繰り返し、上記は週末から私の創造であり、何が間違っているかあなたのコメントを与えてください.............

 

to igrok2008

自動売買の現状は、「収穫の戦い」のようなものだと言えるでしょう。
コンバイン、見積もり、MQL、テスター、本からの不具合TS、自作TSと戦っています。
だから、トレーニングは、単に未解決の問題が多いので、まだ存在しないのです。
技術的なものからグノーシス的なものまで。
- MTSの作成技術はあるが、それ以外のメタトレードは雑然としている
だから、トレーニングのやり方は一つしかない。
=正しい問題を選び、それに取り組み、そこから学ばなければならない。
...
P.S. MT4の問題を(経験やスキルを持って)解決するのではなく、その問題から学び、勉強しなければならないのですから、勉強するのは勿体ないことです。
IMHO=ピアノの上の顔
しかし、オートトレードには他の方法はまだありませんし、これからもないでしょう。

 
Korey >> :

to igrok2008

自動車産業の現状は、「収穫の戦い」のようなものです。
コンバイン、見積もり、MQL、テスター、本からのグリッチTS、自作TSと戦っています。
だから、トレーニングは、単に未解決の問題が多いので、まだ存在しないのです。
技術的なものからグノーシス的なものまで。
- MTSの作成技術はあるが、それ以外のメタトレードは雑然としている
だから、トレーニングのやり方は一つしかない。
=正しい問題を選び、それに取り組み、そこから学ばなければならない。
...
P.S. MT4の問題を(経験やスキルを持って)解決するのではなく、その問題から学び、勉強しなければならないのですから、勉強するのは勿体ないことです。
IMHO=ピアノの上の顔
しかし、オートトレードにはこれ以外の方法はまだありませんし、これからもないでしょう。

なぜ、学ぶことが苦痛になるのか?人は学び、成長する。もし彼が学ばなければ、アメーバ、単細胞の無定形の状態へと変化していく過程である。つまり、これは哲学的な問いかけなのです。それは単純ではなく、複雑なものであり、紅茶(40度)を飲みながら、お菓子(おいしい肉の一部)を食べながら、魔法のソファーの上で議論するのが良いのです ...... -:)))))))))))))))))))))))))))))))))))))))))))))))))))))))。

16.02(上)より、私の創作を繰り返します。何が悪いんだろう.........。

 

to igrok2008

1.質問がされていない、つまり、どこに質問が投げかけられているか?
2.一般的な質問「何が問題なのか」に答えると、このEAは全く動かす必要がなく、テクニックとしてはあるが、テストには向かない。
しかし、もしそうであれば、答えることは何もない。
3.テストは必要ない、例えばCCIについての質問なら、他のこと+CCIについての質問が適切だが、質問していない))
3.SRCボタンに掲載されたコードは見やすく、目や時間の節約になる

 

指標に関する質問です。

1.コードに対する私のコメントは正しいです(赤色)

2.haOpen < haClose のときと haOpen > haClose のときにヒストグラムの色を変えるのは、コードのどこに書いてあるのでしょうか?

もし差し支えなければ、このコードの間違ったコメントを訂正してください本当に理解したい)。

//+------------------------------------------------------------------+
//| Heiken Ashi.mq4 |
//| Copyright c 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//| For Heiken Ashi we recommend next chart settings ( press F8 or |
//| select on menu 'Charts'->'Properties...'): |
//| - On 'Color' Tab select 'Black' for 'Line Graph' |
//| - On 'Common' Tab disable 'Chart on Foreground' checkbox and |
//| select 'Line Chart' radiobutton |
//+------------------------------------------------------------------+

// Все, что было написано выше - стандартная лабуда
// а все, что идет ниже под грифом #property - это объявление глобальных констант.

#property copyright "Copyright © 2004, MetaQuotes Software Corp." // это могли бы и не писать
#property link "http://www.metaquotes.net" // это тоже лабудаа

#property indicator_chart_window // отображать индикатор в основном окне
#property indicator_buffers 4 // будет 4 буфера
#property indicator_color1 Red // цвет для гистограммы
#property indicator_color2 White // цвет для гистограммы
#property indicator_color3 Red // цвет для гистограммы
#property indicator_color4 White // цвет для гистограммы
#property indicator_width1 1 // толщина для гистограмм
#property indicator_width2 1
#property indicator_width3 3
#property indicator_width4 3

//---- четыре строчки ниже - это внешние переменные цветов гистограмм
extern color color1 = Red;
extern color color2 = White;
extern color color3 = Red;
extern color color4 = White;
//---- buffers вводятся переменные, которые в дальнейшем будут связаны с буферами гистограмм индикатора
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//----
int ExtCountedBars=0; // вводится переменная, которой присваивается 0 - хаха , я не знаю почему не 1((
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//|------------------------------------------------------------------|
int init() // а здесь запускается специальная функция init (здесь она запускается после присоединения индикатора к окну графика, после изменения настроек эксперта)
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1); // здесь устанавливается тип гистограмм с порядковыми номерами линий, типом, стилем, шириной, цветом
SetIndexBuffer(0, ExtMapBuffer1); // связывает переменную-массив, объявленную на глобальном уровне с предопределенным (по порядковому номеру линии = 0)
// буфером польз.-го индикатора
. Ниже по аналогии.
SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2);
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexStyle(2,DRAW_HISTOGRAM, 0, 3, color3);
SetIndexBuffer(2, ExtMapBuffer3);
SetIndexStyle(3,DRAW_HISTOGRAM, 0, 3, color4);
SetIndexBuffer(3, ExtMapBuffer4);
//---- // установка порядкового номера бара от начала данных для отрисовки указанной линии
SetIndexDrawBegin(0,10); // порядковый номер линии = 0. хаха не понятно, эта линия будет рисоваться на основании 11 быров с учетом нулевого?(( индикатор отрисован
// по гораздо большему количеству баров((. ниже по аналогии
SetIndexDrawBegin(1,10);
SetIndexDrawBegin(2,10);
SetIndexDrawBegin(3,10);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer1); // а зачем повторять ведь это же уже было написано выше, наверное автор этого индикатора захотел меня запутать!))
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexBuffer(3,ExtMapBuffer4);
//---- initialization done
return(0); // на этом специальная функция init завершается. Только почему в скобках у return ноль?? - непонятно((
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit() // а тут специальная функция deinit, которая не используется
{
//---- TODO: add your code here

//----
return(0); // гуд бай deinit
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() //это основная функция индикатора запускается на каждом новом тике
{
double haOpen, haHigh, haLow, haClose; //вводятся локальные дробные переменные
if(Bars<=10) return(0); //оператор if с условием если баров yна рафике меньше или равно10 - закрывать функцию start
ExtCountedBars=IndicatorCounted(); //переменной ExtCountedBars присваивается значение количества баров в окне терминала.
//а чем отличается
функция IndicatorCounted () от Bars?
//---- check for possible errors
if (ExtCountedBars<0) return(-1); //ну вот, еще один if - если переменная ExtCountedBars < нуля ?завершение функции start? почему return с (-1)? - Непонятно((
//---- last counted bar will be recounted
if (ExtCountedBars>0) ExtCountedBars--; // а если ExtCountedBars больше нуля, от этого количества баров отнимается единица.
//Осуществляется переход на один бар ближе к нулевому - если я правильно понимаю
int pos=Bars-ExtCountedBars-1; //Вводиться и рассчитывается переменная pos - указатель на бар, с которого будет вестись расчет
while(pos>=0) //Запуск цикла while с условием, что pos должна быть больше или равна нулю. Цикл будет повторяться при каждом новом тике
//(при соблюдении условия).
{
haOpen=(ExtMapBuffer3[pos+1]+ExtMapBuffer4[pos+1])/2; //вводится и рассчитывается переменная haOpen на основании(суммы 2-х буферов 3-го и 4-го со смещением на один
//бар вперед)потом это на 2 делится
//когда цикл while снова повториться к pos будет изменена, чтобы не считать уже вычесленное значение индикаторов?

haClose=(Open[pos]+High[pos]+Low[pos]+Close[pos])/4; //вводится и рассчитывается переменная haClose на основании суммы цен открытия, максимума, минимума и закрытия
//бара начала рассчета
haHigh=MathMax(High[pos], MathMax(haOpen, haClose)); //вводиться и рассчитывается переменная haHigh на основании функции возврата максимального из двух числовых
//максимума текущего бара pos и максимального из 2-х числовых значений (haOpen и haClose)
haLow=MathMin(Low[pos], MathMin(haOpen, haClose)); //значений, то же что и строкой выше - только рассчитывается минимальное значение
if (haOpen<haClose) //если haOpen меньше haClose
{
ExtMapBuffer1[pos]=haLow; //тогда значение Буфер 1 по pos равено haLow
ExtMapBuffer2[pos]=haHigh; //и значение буфера 2 по pos равно haHight
}
else //а если условие ложно и haOpen больше или равно haClose
{
ExtMapBuffer1[pos]=haHigh; //тогда наоборот значение Буфер 1 по pos равно haHigh t
ExtMapBuffer2[pos]=haLow; //а значение Буфера 2 по pos равно haLow
}
ExtMapBuffer3[pos]=haOpen; //в любом случае значение Буфера3 по pos равно haOpen
ExtMapBuffer4[pos]=haClose; //а значение буфера 4 по pos равно haClose
pos--; //уменьшаем pos на единицу (ближе к нулевому бару) и повторяем цикл while сначала при соблюдении его условия
}
//----
return(0); //а если условие не соблюлось, выход из цикла while и конец функции start
}
//+------------------------------------------------------------------+
同じような |
ファイル:
 
上記の例では、CCI、RSI、WPRの買いコードと売りコードを説明しています。なぜ、このような指標を使うのでしょうか?私見ですが、Expert Advisorの構築方法を学ぶには最も簡単な方法だと思います。100未満(CCI用)、-70(RSI用)と20(WPR用)、それぞれ販売されます:+100、-30と80:買いと売りの原則は、それらのために同じです。取引条件にエラーがあるような気がするのですが(複数回クロス)、どこがわからないのか・・・。取引条件を正しくWRITINGする原則のことです(そう思います)...............。それが聞きたかったんです......。