اگر فردا روزی
آنها که ما را با هم دیدهاند، پرسیدند او که بود؟
خیلی دقیق از من نگو،
مختصر بگو: باقیِ عمر من است او :) - جمال ثریا
اگر فردا روزی
آنها که ما را با هم دیدهاند، پرسیدند او که بود؟
خیلی دقیق از من نگو،
مختصر بگو: باقیِ عمر من است او :) - جمال ثریا
وای باورم نمیشه اینو خیلی تصادفی کف توئیتر خوندم
دلیل اینکه وقتی از سمت کسی که دوسش داری طرد و تحقیر میشی، ولی همچنان جذبش میشی اینه که؛ برای پس گرفتن عزتنفس تحلیل رفتهات تلاش میکنی نه برای آن شخص! و بهتره بدونی معمولاً به تحلیل رفتن بیشتر عزتنفس مینجامه نه کسب آن رابطه.
خیلی تاثیر گذار بود ....
اول از همه بگم که این موزیک رو از دست ندی
https://open.spotify.com/track/3JqZ1VJzwlX499W9avmCHo?si=9a0cbc06a8cb43fc
و چرا اینجا میذارم ؟
چون تو الان خوابی :)
و منم اصن دوست ندارم وقتی خوابی مزاحمت بشم و بهت پیام بدم
و چون میدونم اینجا رو میخونی پس اینجا برات بارگذاری کردم
و اما بعددددد
خب با این قطعه کد میتونی یک bat فایل رو در mql4 صدا بزنی
فقط حواست باشه که تیک allow dll رو هم تیک بزنی
کدش خیلی ساده است
محتویات bat اینه
@echo off
echo %COMPUTERNAME% > computer_name.txt
wmic diskdrive get serialnumber | findstr /r /v "^$" | findstr /r /v "SerialNumber" >> computer_name.txt
البته این هم هست که مثل دستور بالا عمل میکنه اما ، همه کارکتر ها رو بهم میچسبونه
@echo off
:: فعال کردن Delayed Expansion
setlocal enabledelayedexpansion:: دریافت Computer Name و ذخیره در متغیر
for /f %%i in ('echo %COMPUTERNAME%') do set compName=%%i:: دریافت شماره سریالهای دیسک و ذخیره در متغیر
set serials=
for /f "skip=1" %%a in ('wmic diskdrive get serialnumber') do (
set "serials=!serials!%%a"
):: ترکیب Computer Name و سریالها بدون فاصله
echo %compName%!serials! > "%~dp0MQL4\Files\computer_name.txt"
و محتویات mql4 اینه
البته باید در اول برنامه اینو اضافه کنی
#include // برای اجرای دستور خارجی
#include
#import "shell32.dll"
int ShellExecuteW(int hwnd,const string Operation,const string File,const string Parameters,const string Directory,int ShowCmd);
#import
بعدش توی این تابع میتونی صداش بزنی :)
string GetComputerName() {
// استفاده از TerminalInfoString برای گرفتن مسیر داده ترمینال
string terminalDataPath = TerminalInfoString(TERMINAL_DATA_PATH);
// اجرای فایل BAT
int r = ShellExecuteW(0, "Open", "get_computer_name.bat", NULL, terminalDataPath, 5);
// Print("Shell ", r); // میتونید این رو برای بررسی نتیجهی اجرای فایل BAT فعال کنید// کمی صبر میکنیم تا فایل نوشته بشه
Sleep(1000);
string content ="";
//--- parameters for data reading
string InpFileName="computer_name.txt"; // file name
string InpDirectoryName=""; // directory name//--- open the file
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName, FILE_READ | FILE_TXT);
if(file_handle!=INVALID_HANDLE)
{
//PrintFormat("%s file is available for reading",InpFileName);
//PrintFormat("File path: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- additional variables
FileSeek(file_handle, 0, SEEK_SET); // اطمینان از اینکه نشانگر فایل در ابتدای فایل قرار دارد
//--- read data from the file
while (!FileIsEnding(file_handle)) {
string line = FileReadString(file_handle);
content = content + line;
Print(content);
}
//--- close the file
FileClose(file_handle);
//PrintFormat("Data is read, %s file is closed",InpFileName);
}
else
PrintFormat("Failed to open %s file, Error code = %d",InpFileName,GetLastError());
// برگشت دادن محتویات خوانده شده
return content;
}
الان ساعت نزدیک 2 صبحه
کدی که نوشتم کار نمیکنه و دارم تلاش میکنم درستش کنم
وسطش چرت ام میگیره
و میخوابم و بیدار میشم
اینا به کنار
توی ذهنم اون دیالوگی که چند پست قبل تر نوشتم اصن پاک نمیشه
اینکه چقدر به من بی احترامی شد :(
و خب تصمیم گرفتم ( برای اینکه دیگه توی ذهنم تکرار نشه )
که اگر تماس گرفتن و گفتن برای فلان روز براتون وقت گذاشتیم
بهشون بگم به خاطر بی احترامی که به من کردین ،من نمیام
و از خیر اون هزینه ای که دادم هم گذشتم
چون اصلا در شان من نیست پامو جایی بذارم که به من بی احترامی کردن
و تمام
اینطوری ذهنم نسبت به اون مساله آروم تر میشه
و من میتونم روی این کد تمرکز کنم
واقعا کد خفنی داره میشه
امیدوارم تموم شه و به نتیجه برسه ( خودم خیلی خوش بین هستم )
از الان وقتایی که بی کار میشم
میشینم لیست میکنم کار هایی که باید انجام بدم وقتی این کد به خوبی کار کرد .
خب من برم دیگه
https://open.spotify.com/track/0kt8EZmna4aBELQKNxnjGt?si=ac4d804869d04137
اینم این وقت صبجی توی هدفونم داره پلی میشه ....
قشنگه خب
خب این کدی که دارم کاملش میکنم
هر سری به یک مرحله قابل اتکا که میرسه اینجا پابلیش میکنم
درسته که برای اینکار فضای گیت هاب هست
اما خب دوست دارم این مراحلش رو تا تکامل توی بلاگم بذارم
و مهم تر از همه شاید بدرد آیندگان خورد
خب تغییرات جدید
اینکه بعد از دکمه کلوز بای و سل به این نتیجه رسیدم
که بهتره یک سیستم هچ اتومات هم داشته باشه
بعد اینکه وقتی هچ میکنه خب یک نوتیف هم بده دیگه ؟
نده؟ خب این شد که نوتیف رو هم بهش اضافه کردم
بعد اینکه گفتم حالا اومدیم و هچ هم نشد
ولی به حد سودمون رسید
از اونجایی که بروکر ها ممکنه حد سود های ما رو نان تاچ کنن
که این خیلی زیاد پیش میاد
پس اومدم یک حد سود هم به عنوان یک ورودی براش گذاشتم
این شد الان ورودی سود رو میگیره و خودکار کلوز میکنه
پس الان با سیستم هچ اتومات پابلیشش میکنم.
تغییرات بعدی رو نمیگم
نه که بخوام مخفی کنم نه
چون هنوز قطعی نیست و توی سرم داره میچرخه
اما میتونم بگم از اینجا به بعد دیگه این آخرین نسخه ای هست
که در سطح ترید خونگی مناسبه
از اینجا به بعدش دیگه برای ستاپ و راه اندازیش نیاز به سرور جداگانه داری
چون سطح کدنویسیش رو دارم میبرم به سمت API و بدون داده های API عملا نمیتونه کاری انجام بده
پس این نسخه میشه نسخه استیبل جهت استفاده خونگی
امیدوارم برای همه مفید باشه .
//+----------------------------------------------------------------------+
//| MACDivergenceSimple.mq4 |
//| Copyright 2023, HDNSOFT Ltd. |
//| https://www.hdnsoft.com |
//+----------------------------------------------------------------------+
#property copyright "Copyright 2023, HDNSOFT Ltd."
#property link "https://www.hdnsoft.com"
#property version "1.00"
#property strictinput string SERVER_ID = "Server01";
// تنظیمات ورودی Hedging System
input double Tootal_Lost_heach = 20;//Total Lost For Hedging.$
input double Tootal_Profit_Close = 20;//Total Profit For Close All.$
input int MACD_FastEMA = 120;//MACD FastEMA
input int MACD_SlowEMA = 260;//MACD SlowEMA
input int MACD_SignalSMA = 90;//MACD SignalSMAinput int FontSize = 10; //Font Timer
input color FontColor = clrDarkOrange; // Color Of Timer
input string FontName = "Tahoma"; // Font Of Timerdatetime lastTime = 0; // زمان آخرین کندل
string Object_name = "";
// آرایههای ذخیرهسازی
double macdPositiveValues[];
double macdNegativeValues[];
int positiveBarNumbers[];
int negativeBarNumbers[];
datetime positiveDates[];
datetime negativeDates[];// متغییر های هچ خودکار
int heach_cnt=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit() {
// حذف تمامی آبجکتهایی که حاوی عبارت "MACDivergence" هستند
DeleteObjectsWithNamePart("MACDivergence");
lastTime = iTime(NULL, 0, 0); // زمان اولین کندل
// تنظیم تایمر برای هر ثانیه
EventSetTimer(1);
DrawHourlyLines();
// اجرای تحلیل و ذخیرهسازی مقادیر
AnalyzeAndStoreValues();
// رسم فلشها بر اساس مقادیر آرایهها
DrawArrowsFromArrays();
CompareAndDrawTrendLines();
CreateButtons();return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
// توقف تایمر
EventKillTimer();
// Remove all vertical lines with "first-Line" in the name when the expert advisor is removed
for (int i = ObjectsTotal() - 1; i >= 0; i--)
{
string objName = ObjectName(i);
if (StringFind(objName, "first-Line") != -1)
{
ObjectDelete(objName);
}
}
}//+------------------------------------------------------------------+
//| Delete objects containing a specific name part |
//+------------------------------------------------------------------+
void DeleteObjectsWithNamePart(string namePart) {
int totalObjects = ObjectsTotal();
for (int i = totalObjects - 1; i >= 0; i--) {
string name = ObjectName(i);
if (StringFind(name, namePart) >= 0) {
ObjectDelete(name);
}
}
}//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer() {
datetime currentTime = iTime(NULL, 0, 0);// بررسی بسته شدن کندل جدید
if (currentTime != lastTime) {
lastTime = currentTime;// حذف آبجکتهای قبلی
DeleteObjectsWithNamePart("MACDivergence");
// رسم خطوط یک ساعته
DrawHourlyLines();
// اجرای تحلیل و ذخیرهسازی مقادیر
AnalyzeAndStoreValues();
// رسم فلشها بر اساس مقادیر آرایهها
DrawArrowsFromArrays();
CompareAndDrawTrendLines();
}// نمایش شمارنده معکوس
ShowCountdownTimer();
//نمایش آخرین وضعیت سود
ShowProfitNow();
}//+------------------------------------------------------------------+
//| Analyze MACD phases and store values |
//+------------------------------------------------------------------+
void AnalyzeAndStoreValues() {
int bars = iBars(NULL, 0);
ArrayResize(macdPositiveValues, 0);
ArrayResize(macdNegativeValues, 0);
ArrayResize(positiveBarNumbers, 0);
ArrayResize(negativeBarNumbers, 0);
ArrayResize(positiveDates, 0);
ArrayResize(negativeDates, 0);bool isPositive = false;
double maxMACD = -DBL_MAX;
double minMACD = DBL_MAX;
int maxIndex = -1;
int minIndex = -1;for (int i = bars - 1; i >= 0; i--) {
double macdValue = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, i);
double signalValue = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_SIGNAL, i);if (signalValue > 0) {
if (!isPositive) {
if (minIndex != -1) {
// ذخیره مقادیر مکدی منفی
ArrayResize(macdNegativeValues, ArraySize(macdNegativeValues) + 1);
ArrayResize(negativeBarNumbers, ArraySize(negativeBarNumbers) + 1);
ArrayResize(negativeDates, ArraySize(negativeDates) + 1);
macdNegativeValues[ArraySize(macdNegativeValues) - 1] = minMACD;
negativeBarNumbers[ArraySize(negativeBarNumbers) - 1] = minIndex;
negativeDates[ArraySize(negativeDates) - 1] = Time[minIndex];
}
isPositive = true;
maxMACD = macdValue;
maxIndex = i;
} else if (macdValue > maxMACD) {
maxMACD = macdValue;
maxIndex = i;
}
} else {
if (isPositive) {
if (maxIndex != -1) {
// ذخیره مقادیر مکدی مثبت
ArrayResize(macdPositiveValues, ArraySize(macdPositiveValues) + 1);
ArrayResize(positiveBarNumbers, ArraySize(positiveBarNumbers) + 1);
ArrayResize(positiveDates, ArraySize(positiveDates) + 1);
macdPositiveValues[ArraySize(macdPositiveValues) - 1] = maxMACD;
positiveBarNumbers[ArraySize(positiveBarNumbers) - 1] = maxIndex;
positiveDates[ArraySize(positiveDates) - 1] = Time[maxIndex];
}
isPositive = false;
minMACD = macdValue;
minIndex = i;
} else if (macdValue < minMACD) {
minMACD = macdValue;
minIndex = i;
}
}
}
}//+------------------------------------------------------------------+
//| Show countdown timer |
//+------------------------------------------------------------------+
void ShowCountdownTimer() {
datetime currentTime = TimeCurrent();
datetime candleCloseTime = iTime(NULL, 0, 0) + PeriodSeconds();
int secondsRemaining = (int)(candleCloseTime - currentTime);string text;
if (secondsRemaining < 60) {
text = " " + IntegerToString(secondsRemaining) + "s";
} else if (secondsRemaining < 3600) {
int minutes = secondsRemaining / 60;
int seconds = secondsRemaining % 60;
text = " " + IntegerToString(minutes) + "m " + IntegerToString(seconds) + "s";
} else if (secondsRemaining < 86400) {
int hours = secondsRemaining / 3600;
int minutes = (secondsRemaining % 3600) / 60;
int seconds = secondsRemaining % 60;
text = " " + IntegerToString(hours) + ":" + IntegerToString(minutes) + ":" + IntegerToString(seconds);
} else {
int days = secondsRemaining / 86400;
int hours = (secondsRemaining % 86400) / 3600;
int minutes = (secondsRemaining % 3600) / 60;
int seconds = secondsRemaining % 60;
text = " ⏰ " + IntegerToString(days) + "d " + IntegerToString(hours) + ":" + IntegerToString(minutes) + ":" + IntegerToString(seconds);
}string name = "MACDivergence_CountdownTimer";
double askPrice = NormalizeDouble(MarketInfo(Symbol(), MODE_BID), Digits);
// تغییر مکان تایمر به دو کندل جلوتر
double offsetPrice = askPrice;
datetime futureTime = iTime(NULL, 0, 0) + 2 * PeriodSeconds();bool created = ObjectCreate(0, name, OBJ_TEXT, 0, futureTime, offsetPrice);
if (created) {
ObjectSetInteger(0, name, OBJPROP_COLOR, FontColor);
ObjectSetInteger(0, name, OBJPROP_FONTSIZE, FontSize);
ObjectSetString(0, name, OBJPROP_TEXT, text);
ObjectSetString(0, name, OBJPROP_FONT, FontName);
} else {
ObjectSetString(0, name, OBJPROP_TEXT, text); // بروزرسانی متن تایمر در صورت ایجاد قبلی
ObjectMove(0, name, 0, futureTime, offsetPrice); // بروزرسانی مکان تایمر در صورت ایجاد قبلی
}
}
//+------------------------------------------------------------------+
//| Draw arrows based on array values |
//+------------------------------------------------------------------+
void DrawArrowsFromArrays() {
// رسم فلشها برای مقادیر مثبت مکدی
for (int i = 0; i < ArraySize(macdPositiveValues); i++) {
DrawArrowOnChart(positiveBarNumbers[i], true, 1); // درج فلش سبز در پنجره مکدی
DrawArrowOnChart(positiveBarNumbers[i], true, 0); // درج فلش سبز در پنجره چارت
}// رسم فلشها برای مقادیر منفی مکدی
for (int i = 0; i < ArraySize(macdNegativeValues); i++) {
DrawArrowOnChart(negativeBarNumbers[i], false, 1); // درج فلش قرمز در پنجره مکدی
DrawArrowOnChart(negativeBarNumbers[i], false, 0); // درج فلش قرمز در پنجره چارت
}
}
//+------------------------------------------------------------------+
//| Draw arrow on chart at specified bar |
//+------------------------------------------------------------------+
void DrawArrowOnChart(int barNumber, bool isUp, int window) {
string name = "MACDivergence_Arrow_" + IntegerToString(barNumber) + (window == 1 ? "_MACD" : "_Chart");
double arrowPrice;
double priceRange = WindowPriceMax() - WindowPriceMin();
double offsetUpChart = priceRange * 0.03; // تنظیم فاصله برای فلشهای رو به بالا در چارت
double offsetDownChart = priceRange * 0.01; // تنظیم فاصله برای فلشهای رو به پایین در چارت
double offsetUpMACD = priceRange * 0.015; // تنظیم فاصله برای فلشهای رو به بالا در مکدی
double offsetDownMACD = priceRange * 0.005; // تنظیم فاصله برای فلشهای رو به پایین در مکدیif (window == 1) {
arrowPrice = isUp ? iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, barNumber) + offsetUpMACD
: iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, barNumber) - offsetDownMACD;
} else {
if (isUp) {
arrowPrice = High[barNumber] + offsetUpChart; // فلش سبز برای high کندل
} else {
arrowPrice = Low[barNumber] - offsetDownChart; // فلش قرمز برای low کندل
}
}bool created = ObjectCreate(0, name, OBJ_TEXT, window, Time[barNumber], arrowPrice);
if (created) {
ObjectSetInteger(0, name, OBJPROP_COLOR, isUp ? clrDeepSkyBlue : clrDeepPink);
ObjectSetInteger(0, name, OBJPROP_FONTSIZE, 10);
ObjectSetString(0, name, OBJPROP_TEXT, isUp ? "▲" : "▼");
}
}
//+------------------------------------------------------------------+
//| Compare MACD values and draw trend lines |
//+------------------------------------------------------------------+
void CompareAndDrawTrendLines() {
// مقایسه و رسم ترند لاینها برای مقادیر مثبت مکدی
for (int i = 0; i < ArraySize(macdPositiveValues) - 1; i++) {
if (macdPositiveValues[i] > macdPositiveValues[i + 1] && High[positiveBarNumbers[i]] < High[positiveBarNumbers[i + 1]]) {
// رسم ترند لاین بین مقادیر high کندل
DrawTrendLine(positiveBarNumbers[i], positiveBarNumbers[i + 1], 1);// رسم ترند لاین بین مقادیر مثبت مکدی بر اساس عدد کندل
DrawPositiveMACDTrendLine(positiveBarNumbers[i], positiveBarNumbers[i + 1]);
}
}// مقایسه و رسم ترند لاینها برای مقادیر منفی مکدی
for (int i = 0; i < ArraySize(macdNegativeValues) - 1; i++) {
if (macdNegativeValues[i] < macdNegativeValues[i + 1] && Low[negativeBarNumbers[i]] > Low[negativeBarNumbers[i + 1]]) {
// رسم ترند لاین بین مقادیر low کندل
DrawTrendLine(negativeBarNumbers[i], negativeBarNumbers[i + 1], -1);// رسم ترند لاین بین مقادیر منفی مکدی بر اساس عدد کندل
DrawNegativeMACDTrendLine(negativeBarNumbers[i], negativeBarNumbers[i + 1]);
}
}
}//+------------------------------------------------------------------+
//| Draw positive MACD trend line between two bars based on candle numbers |
//+------------------------------------------------------------------+
void DrawPositiveMACDTrendLine(int barNumber1, int barNumber2) {
string name = "MACDivergence_PositiveMACDTrendLine_" + IntegerToString(barNumber1) + "_to_" + IntegerToString(barNumber2);
double price1 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, barNumber1);
double price2 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, barNumber2);bool created = ObjectCreate(0, name, OBJ_TREND, 1, Time[barNumber1], price1, Time[barNumber2], price2);
if (created) {
ObjectSetInteger(0, name, OBJPROP_COLOR, clrDarkGreen); // تنظیم رنگ به سبز تیره
ObjectSetInteger(0, name, OBJPROP_WIDTH, 2);
ObjectSetInteger(0, name, OBJPROP_RAY, false); // خارج کردن خط ترند از حالت Ray
}
}//+------------------------------------------------------------------+
//| Draw negative MACD trend line between two bars based on candle numbers |
//+------------------------------------------------------------------+
void DrawNegativeMACDTrendLine(int barNumber1, int barNumber2) {
string name = "MACDivergence_NegativeMACDTrendLine_" + IntegerToString(barNumber1) + "_to_" + IntegerToString(barNumber2);
double price1 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, barNumber1);
double price2 = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, barNumber2);bool created = ObjectCreate(0, name, OBJ_TREND, 1, Time[barNumber1], price1, Time[barNumber2], price2);
if (created) {
ObjectSetInteger(0, name, OBJPROP_COLOR, clrDarkRed); // تنظیم رنگ به قرمز تیره برای ترند لاینهای منفی مکدی
ObjectSetInteger(0, name, OBJPROP_WIDTH, 2);
ObjectSetInteger(0, name, OBJPROP_RAY, false); // خارج کردن خط ترند از حالت Ray
}
}//+------------------------------------------------------------------+
//| Draw trend line between two bars on chart only |
//+------------------------------------------------------------------+
void DrawTrendLine(int barNumber1, int barNumber2 ,int type) {
string name = "MACDivergence_TrendLine_" + IntegerToString(barNumber1) + "_to_" + IntegerToString(barNumber2) + "_Chart";
double price1 = Low[barNumber1];
double price2 = Low[barNumber2];
color clr = clrDeepPink;
if(type > 0 )
{
price1 = High[barNumber1];
price2 = High[barNumber2];
clr = clrSkyBlue;
}bool created = ObjectCreate(0, name, OBJ_TREND, 0, Time[barNumber1], price1, Time[barNumber2], price2);
if (created) {
ObjectSetInteger(0, name, OBJPROP_COLOR, clr); // تنظیم رنگ به سبز تیره
ObjectSetInteger(0, name, OBJPROP_WIDTH, 2);
ObjectSetInteger(0, name, OBJPROP_RAY, false); // خارج کردن خط ترند از حالت Ray
}
}void DrawHourlyLines() {
int bars = iBars(NULL, 0);
for (int i = bars - 1; i >= 0; i--) {
datetime time = Time[i];
int minute = TimeMinute(time);
int hh = TimeHour(time);
if ( minute == 0) { // هر 60 دقیقه
string lineName = "MACDivergence_HHLine_" + IntegerToString(i);
if (!ObjectCreate(0, lineName, OBJ_VLINE, 0, time, 0)) {
Print("Failed to create line: ", lineName);
continue;
}
ObjectSetInteger(0, lineName, OBJPROP_COLOR, C'0,153,204');
ObjectSetInteger(0, lineName, OBJPROP_WIDTH, 1);
ObjectSetInteger(0, lineName, OBJPROP_STYLE, STYLE_DASH); // خط چین
}
if (minute % 30 == 0 && minute > 0) { // هر 30 دقیقه
string lineName = "MACDivergence_VLine_" + IntegerToString(i);
if (!ObjectCreate(0, lineName, OBJ_VLINE, 0, time, 0)) {
Print("Failed to create line: ", lineName);
continue;
}
ObjectSetInteger(0, lineName, OBJPROP_COLOR, C'157,86,0');
ObjectSetInteger(0, lineName, OBJPROP_WIDTH, 1);
ObjectSetInteger(0, lineName, OBJPROP_STYLE, STYLE_DASH); // خط چین
}
if (minute % 30 == 0) {// پیدا کردن بالاترین یا پایینترین میله مکدی بر اساس فاز مکدی
double maxMACD = -DBL_MAX;
double minMACD = DBL_MAX;
int maxBar = -1;
int minBar = -1;for (int j = i; j > i - 30 && j >= 0; j--) { // بررسی 30 کندل قبلی
double macdValue = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_MAIN, j);
double signalValue = iMACD(NULL, 0, MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA, PRICE_CLOSE, MODE_SIGNAL, j);if (macdValue >= 0) { // فاز مثبت - به دنبال حداکثر
if (macdValue > maxMACD) {
maxMACD = macdValue;
maxBar = j;
}
} else { // فاز منفی - به دنبال حداقل
if (macdValue < minMACD) {
minMACD = macdValue;
minBar = j;
}
}
}// رسم فلشها
if (maxBar != -1) {
// فلش رو به بالا
DrawArrowOnChart(maxBar, true, 1);
DrawArrowOnChart(maxBar, true, 0);
}
if (minBar != -1) {
// فلش رو به پایین
DrawArrowOnChart(minBar, false, 1);
DrawArrowOnChart(minBar, false, 0);
}
}
}
// تغییر رنگ کندلها
ChartSetInteger(NULL, CHART_COLOR_CANDLE_BULL, clrGreen);
ChartSetInteger(NULL, CHART_COLOR_CHART_UP, clrAqua);
ChartSetInteger(NULL, CHART_COLOR_CANDLE_BEAR, C'132,0,72');
ChartSetInteger(NULL, CHART_COLOR_CHART_DOWN, clrDeepPink);
//رسم خط چین رو به جلو
datetime time = Time[0];
int hour = TimeHour(time);
int minute = TimeMinute(time);
// بررسی اینکه آیا دقیقه کمتر از 30 هست یا بیشتر
if (minute < 30) {
minute = 30; // تنظیم به نیم ساعت
} else {
minute = 0; // تنظیم به ساعت بعد
hour = (hour + 1) % 24; // افزایش ساعت و بررسی عبور از 23 به 0
}
// تبدیل به datetime
datetime roundedTime = StrToTime(TimeToString(time, TIME_DATE) + " " + IntegerToString(hour) + ":" + (minute < 10 ? "0" : "") + IntegerToString(minute));string lineName = "MACDivergence_VLine_Temps" + IntegerToString(0);
ObjectDelete(NULL,"MACDivergence_VLine_Temps" + IntegerToString(0));
ObjectCreate(0, lineName, OBJ_VLINE, 0, roundedTime, 0);
ObjectSetInteger(0, lineName, OBJPROP_COLOR, clrGold);
ObjectSetInteger(0, lineName, OBJPROP_WIDTH, 1);
ObjectSetInteger(0, lineName, OBJPROP_STYLE, STYLE_DASH); // خط چین
}
void ShowProfitNow()
{
double totalProfit = 0;
double buyProfit = 0, sellProfit = 0;
double buyLots = 0, sellLots = 0;
int totalOrders = OrdersTotal();
int buyCnt = 0;
int sellCnt = 0;
for(int i = 0; i < totalOrders; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == Symbol())
{
double profit = OrderProfit();
totalProfit += profit+OrderSwap()+OrderCommission();if(OrderType() == OP_BUY)
{
buyLots += OrderLots();
buyProfit += profit+OrderSwap()+OrderCommission();
buyCnt++;
}
else if(OrderType() == OP_SELL)
{
sellLots += OrderLots();
sellProfit += profit+OrderSwap()+OrderCommission();
sellCnt++;
}
}
}color profitColor = (totalProfit >= 0) ? clrDarkGreen : clrDarkMagenta;
ObjectDelete("MACDivergence_ProfitDisplay");
ObjectDelete("MACDivergence_BuyInfo");
ObjectDelete("MACDivergence_SellInfo");
ObjectDelete("MACDivergence_AccInfo");
double swapLong = MarketInfo(Symbol(), MODE_SWAPLONG);
double swapShort = MarketInfo(Symbol(), MODE_SWAPSHORT);// Display total profit
Object_name = "MACDivergence_ProfitDisplay";
ObjectCreate(0, Object_name, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 260);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 20);
ObjectSetInteger(0, Object_name, OBJPROP_FONTSIZE, 28);
ObjectSetInteger(0, Object_name, OBJPROP_COLOR, profitColor);
ObjectSetString(0, Object_name, OBJPROP_TEXT, DoubleToString(totalProfit, 2));// Display Buy info
Object_name = "MACDivergence_BuyInfo";
ObjectCreate(0, Object_name, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 260);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 60);
ObjectSetInteger(0, Object_name, OBJPROP_FONTSIZE, 9);
ObjectSetInteger(0, Object_name, OBJPROP_COLOR, clrAqua);
ObjectSetString(0, Object_name, OBJPROP_TEXT, IntegerToString(buyCnt)+" Buy L: " + DoubleToString(buyLots, 2) + " | Pr: " + DoubleToString(buyProfit, 2)+ " | Sw: " + DoubleToString(buyLots*swapLong, 2));// Display Sell info
Object_name = "MACDivergence_SellInfo";
ObjectCreate(0, Object_name, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 260);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 80);
ObjectSetInteger(0, Object_name, OBJPROP_FONTSIZE, 9);
ObjectSetInteger(0, Object_name, OBJPROP_COLOR, clrDeepPink);
ObjectSetString(0, Object_name, OBJPROP_TEXT, IntegerToString(sellCnt)+" Sell L: " + DoubleToString(sellLots, 2) + " | Pr: " + DoubleToString(sellProfit, 2)+ " | Sw: " + DoubleToString(sellLots*swapShort, 2));
// Display Account info
Object_name = "MACDivergence_AccInfo";
ObjectCreate(0, Object_name, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 260);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 100);
ObjectSetInteger(0, Object_name, OBJPROP_FONTSIZE, 9);
ObjectSetInteger(0, Object_name, OBJPROP_COLOR, clrLavender);
ObjectSetString(0, Object_name, OBJPROP_TEXT, "Bal: " + DoubleToString(AccountBalance(), 2) + " | Equ: " + DoubleToString(AccountEquity()-AccountMargin(), 2)+ " | Mar: " + DoubleToString(AccountMargin(), 2));// Heach Moadel
string deal_ready = "";
double deal_lot = 0;if (buyCnt == 0 && sellCnt == 0) {
heach_cnt = 0;
}heach_cnt = MathMax(buyCnt, sellCnt);
double lotDifference = buyLots - sellLots; // محاسبه اختلاف حجم
if (lotDifference > 0) {
deal_ready = "Sell Ready";
deal_lot = lotDifference; // حجم معامله فروش لازم
} else if (lotDifference < 0) {
deal_ready = "Buy Ready";
deal_lot = MathAbs(lotDifference); // حجم معامله خرید لازم
} else {
deal_ready = "Balanced"; // اگر حجم برابر باشد
}if ((Tootal_Lost_heach * heach_cnt) + totalProfit < 0) {
if (deal_ready == "Sell Ready") {
// باز کردن معامله فروش
int result = OrderSend(Symbol(), OP_SELL, deal_lot, Bid, 3, 0, 0, "Hedge Sell "+SERVER_ID, 2025, 0, clrRed);
if(result > 0) SendNotification(SERVER_ID +" Open Sell Order for Heage." );
} else if (deal_ready == "Buy Ready") {
// باز کردن معامله خرید
int result = OrderSend(Symbol(), OP_BUY, deal_lot, Ask, 3, 0, 0, "Hedge Buy "+SERVER_ID, 2025, 0, clrBlue);
if(result > 0) SendNotification(SERVER_ID +" Open Buy Order for Heage." );
}
}// Display Hedging info
Object_name = "MACDivergence_HeachInfo";
ObjectCreate(0, Object_name, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 260);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 180);
ObjectSetInteger(0, Object_name, OBJPROP_FONTSIZE, 9);
ObjectSetInteger(0, Object_name, OBJPROP_COLOR, clrGold);
ObjectSetString(0, Object_name, OBJPROP_TEXT, "H Lot: " + DoubleToStr(deal_lot,2) +" H Cnt: " + IntegerToString(heach_cnt) + " | H $: " + DoubleToString(Tootal_Lost_heach * heach_cnt, 2)+ " | Rem: " + DoubleToString((Tootal_Lost_heach * heach_cnt ) + totalProfit, 2));
// Display Server info
Object_name = "MACDivergence_ServerInfo";
ObjectCreate(0, Object_name, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 260);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 194);
ObjectSetInteger(0, Object_name, OBJPROP_FONTSIZE, 9);
ObjectSetInteger(0, Object_name, OBJPROP_COLOR, clrGold);
ObjectSetString(0, Object_name, OBJPROP_TEXT, "Server ID : " + SERVER_ID);// Close All System When Profit Is Ok
if ( Tootal_Profit_Close > 0 && totalProfit >= Tootal_Profit_Close )
{
SendNotification(SERVER_ID +" All Order Close With Profit." );
CloseOrders("All");
}if ( Tootal_Profit_Close > 0 )
{
// Display Hedging info
Object_name = "MACDivergence_Tootal_Profit_Close";
ObjectCreate(0, Object_name, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 260);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 208);
ObjectSetInteger(0, Object_name, OBJPROP_FONTSIZE, 9);
ObjectSetInteger(0, Object_name, OBJPROP_COLOR, clrDarkOrange);
ObjectSetString(0, Object_name, OBJPROP_TEXT, "Close All Order Is Active : " + DoubleToStr(Tootal_Profit_Close,2) + "$ "+" | Rem: "+DoubleToStr(Tootal_Profit_Close-totalProfit ,2) );}
}
//+------------------------------------------------------------------+
//| Function to create buttons on the chart |
//+------------------------------------------------------------------+
void CreateButtons()
{
// Create Close Buy button
Object_name = "CloseBuyButton";
ObjectCreate(0, Object_name, OBJ_BUTTON, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 189);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 120);
ObjectSetInteger(0, Object_name, OBJPROP_XSIZE, 70);
ObjectSetInteger(0, Object_name, OBJPROP_YSIZE, 30);
ObjectSetString(0, Object_name, OBJPROP_TEXT, "Close Buy");// Create Close Sell button
Object_name = "CloseSellButton";
ObjectCreate(0, Object_name, OBJ_BUTTON, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 118);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 120);
ObjectSetInteger(0, Object_name, OBJPROP_XSIZE, 70);
ObjectSetInteger(0, Object_name, OBJPROP_YSIZE, 30);
ObjectSetString(0, Object_name, OBJPROP_TEXT, "Close Sell");// Create Close All button
Object_name = "CloseAllButton";
ObjectCreate(0, Object_name, OBJ_BUTTON, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 260);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 120);
ObjectSetInteger(0, Object_name, OBJPROP_XSIZE, 70);
ObjectSetInteger(0, Object_name, OBJPROP_YSIZE, 30);
ObjectSetString(0, Object_name, OBJPROP_TEXT, "Close All");
// Create Close All button
Object_name = "CloseAllButtonOrder";
ObjectCreate(0, Object_name, OBJ_BUTTON, 0, 0, 0);
ObjectSetInteger(0, Object_name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, Object_name, OBJPROP_XDISTANCE, 260);
ObjectSetInteger(0, Object_name, OBJPROP_YDISTANCE, 150);
ObjectSetInteger(0, Object_name, OBJPROP_XSIZE, 212);
ObjectSetInteger(0, Object_name, OBJPROP_YSIZE, 30);
ObjectSetString(0, Object_name, OBJPROP_TEXT, "Close All Order");
}//+------------------------------------------------------------------+
//| Chart event handler |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
if(id == CHARTEVENT_OBJECT_CLICK)
{
if(sparam == "CloseBuyButton")
{
Print("Close Buy clicked");
Sleep(40);
//--- bring the button back to the released state
ObjectSetInteger(0,"CloseBuyButton",OBJPROP_STATE,false);
//--- redraw the chart
ChartRedraw();
CloseOrders("Buy");
}
else if(sparam == "CloseSellButton")
{
Print("Close Sell clicked");
Sleep(40);
//--- bring the button back to the released state
ObjectSetInteger(0,"CloseSellButton",OBJPROP_STATE,false);
//--- redraw the chart
ChartRedraw();
CloseOrders("Sell");
}
else if(sparam == "CloseAllButton")
{
Print("Close All clicked");
Sleep(40);
//--- bring the button back to the released state
ObjectSetInteger(0,"CloseAllButton",OBJPROP_STATE,false);
//--- redraw the chart
ChartRedraw();
CloseOrders("All");
}
else if(sparam == "CloseAllButtonOrder")
{
Print("Close All Order clicked");
Sleep(40);
//--- bring the button back to the released state
ObjectSetInteger(0,"CloseAllButtonOrder",OBJPROP_STATE,false);
//--- redraw the chart
ChartRedraw();
CloseOrders("AllOrder");
}
}
}//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Function to close orders based on type |
//+------------------------------------------------------------------+
void CloseOrders(string type)
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if( (type == "Buy" || type == "All" ) && OrderType() == OP_BUY && OrderSymbol() == Symbol() )
{
double CloseBuy=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),0);
}
if( (type == "Sell" || type == "All" ) && OrderType() == OP_SELL && OrderSymbol() == Symbol() )
{
double CloseSell=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0);
}
if( type == "AllOrder" && OrderType() == OP_BUY )
{
double CloseBuy=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),0);
}
if( type == "AllOrder" && OrderType() == OP_SELL )
{
double CloseSell=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0);
}
// Delete pending orders
if((type == "AllOrder" || type == "All") && (OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP))
{
double DeleteOrders = OrderDelete(OrderTicket());
}
}
}
}
امروز صب با صدای پرنده ها بیدار شدم
و قبل از هر چیزی دوست دارم این موزیک رو باتو به اشتراک بذارم
https://open.spotify.com/track/47Xr5C8pQ0eHGNvpQWui4N?si=ddf439ddfcaa4b8b
امیدوارم از شنیدنش لذت ببری
آلزووو ، میگفتم
صب با صدای پرنده ها بیدار شدم
حسش رو خیلی دوست داشتم ....
این پرنده ها خیلی قشنگ میخونن
چند تا مرغ مینا هستن
که نمیدونم رها سازی شدن یا خودشون اومدن
یعنی محل خواب منو تبدیل کردن به بهترین تخت خواب دنیا
واییی یک وقتایی 4 صبح میزننن زیر آواز
انقدددد قشنگههه که من نمیتونم توصیفش کنم .
دیشب تا دیروقت پشت میزم داشتم کدنویسی میکردم
ببین انقد خوابم میومد که بین هر چند خط کد یک چرت ریزی میزدم
من میدونم که بالاخره اینا به نتیجه میرسه
و یک میراث قشنگ از خودم به جا میذارم :)
حوالی ساعت 1:30 بود که دیگه تموم شد
پاشدم برم سمت تختم ، اما خب تا همون جا هم کلی تلو تلو خوردم
ناگهان یادم اومد که عه ! من عملیات مخصوص نگهداری دندان روانجام ندادم
پس دوباره راهمو کج کردم بسمت حمام تا مسواک بزنم
سر راه گفتم ماگ م رو ببرم توی آشپزخونه
بردم اونجا دیدم که عه یک تیکه از اشترودلم مونده که نخوردم
پس گفتم یک گاز هم به این بزنم اما نه بیشتر ( که فستینگم بهم ریز نشه :) )
دیگه بعد انجام ایناااا راهی حمام شدم
مسواک زدم و داشتم فکر میکردم که چقدر این یکی خمیر دندانه زود تموم شد :)
تقریبا یک ماهه میشه خریدمش اما رسیده به نصف :/
مسواک رو زدم و گیج و بیج رفتم سمت تختم
بعدشم شلپپپپ بیهوش شدمممم تا با صدای پرنده ها بیدار شدم
وای یکی دیگه از قسمت های قشنگش ، مرحله خواب دیدن بود
واقعا از همه کسایی که به من کمک کردن تا بتونم با مدتیشین
درونم رو آرام کنم ( که البته سختههه چون بعضی وقتااا متلاطممم میشههه )
آلزووو ، ازشون واقعا متشکرم .
چون این تمرین ها باعث شدن شبا خواب هایی که میبینم خیلی با وضوح
بیشتری یادمبمونه :)
رسیدیم به این موزیک
https://open.spotify.com/track/1DpVnJYdUZHt49bRgFyXg1?si=4e5dc4da61694b6b
اینم قشنگهههه موزیکش
آره دیگه یک خواب خوبی بود
خوب از این جهت که اتفاق های داخلش رو دوست داشتم
چرا اینومیگم ؟
باشه پست بعدی :)
نه که جزییات خوابمو بگم نه
چون کلا یکی از شروطش اینه که خواب ها رو تعریف نکنی
اما اینکه میگم اتفاق های داخلش رو دوست داشتم
از اون جهت میگم که توی پست بعدی میگم حتما :)
دیگه همینا
آهان من برم پای ادامه کد دیشبم
البته تغییراتش رو تا اینجا دوباره پابلیش میکنم :)
فکر میکنم وقتشه که دیگه تعداد پست های صفحه اول رو از عدد 1 به عدد بیشتری تغییر بدم
چون گویا دارم پست هایی با متن طولانی تر و با فاصله کوتاه تری منتشر میکنم که اینطوری ممکنه بعضی پست ها رو از دست بدی
حالا نمیدونم اینا اثرات همسخنی مژی جون عه یا چی
اما هر کدومش که باشه
اینو دوست میدارم
عه رسیدیم به این موزیککک
https://open.spotify.com/track/1JDwfM6fzE7HtRukcJSZDd?si=80c334ee2dc04c4f
اینم خیلی قشنگه خب
اینا نشون میده که حداقل 12 دقیقه است دارم این پست رو مینویسم :)
من به این فکر میکنم
قبلش بگم که اینو هم دارم گوش میدم
https://open.spotify.com/track/7A9EaHBlR4gLqDzeJGumYa?si=651852e630c44262
هر کسی به میزان رنجی که می بره ممکنه رفتار ناپسندی نشون بده
البته که این اصلا دلیل و توجیه مناسبی برای رفتار اشتباه ما نیست
اما اگر با این دید بهش نگاه کنیم اونوقت به جای اینکه از رفتار ناپسند اون ها ناراحت باشیم
بیشتر باهاشون همدلی میکنیم .
مثلا من به مکالمه امروزم که نگاه میکنم
میگم چقدر ممکنه اون بنده خدا در فشار زیادی از سمت آدم های اشتباهی بوده باشه
که حتی تحمل یک بازخورد ساده منو هم نداشته باشه
این جاست که به جای اینکه ازش ناراحت بشم و حتی بد تر عصبانی بشم
شاید بهتر باشه که باهاش همدلی کنم و درکش کنم که چقدر ممکنه شرایطش سخت باشه
شاید این جامعه اونقدرام که برای من بی سر و صدا بوده ، برای اون نبوده
شاید آدم های نامناسب تری سر راهش بودن که اون رو انقد زخمی کردن
که وقتی بهش بازخورد منفی میدی انقد بهم میریزه و عصبانی میشه
من فکر میکنم اگه قرار شد بهش بگم ( که از اون حرفش چقدر ناراحتم ) بهتره طوری بگم که خودش سبب یک ناراحتی جدید نشه
مثلا شاید بهش بگم که آقا من واقعا از اینکه به شما این حس رو منتقل کردم که گویا موضوع کاری نیست ، عذر میخوام
ولی در نظر بگیرین که من با اینکه خط شخصی شما رو داشتم اما روی خط کاری تون زنگ زدم و حتی ازتون پرسیدم که اگر تایم مناسبی هست
که صحبت کنیم
شاید اینطوری بهتر باشه
در نهایت باید بگم ....
واقعا هوای همو داشته باشیم
ما نمیدونیم که توی زندگی ها چی میگذره
پس باهم مهربون باشیم و همو اذیت نکنیم .
زندگی ها کوتاه تر از این حرفاست
رسیدم به این موزیک
امیدوارم دوسش داشته یاشی
https://open.spotify.com/track/5iSVFvucVIbOSkWAHCK7vo?si=d6b619cdb48e4cf8
اول از همه بگم که این موزیک رو گذاشتم پلی شه
مژی جان اینو از ساند کلاد پابلیش کرد
منم نسخه اسپاتیفای شو اینجا پابلیش میکنم.
https://open.spotify.com/track/2JBRpJ00n3aXuBnkegfjwo?si=f6201436ef984eee
و اما بعد....
توی اون پست قبلی عه نوشتم که اگر تا روز دوشنبه برام وقت نذارن و اینا زنگ میزنم و این چیزایی که اینجا نوشته بودم رو اونجا بهش میگم
خب باید بگم که من از صبح با همه درگیری هایی که داشتم
واقعا نتونستم با این موضوع کنار بیام که چطور میشه بعد سه بار تاکید کردن کار هایی که دارم
و تازه با پرداخت نقدی هزینه شون ( که خدا میدونه چقد در شرایط فشرده ی بودم و به سختی تونستم تهیه اش کنم )
بازم یادشون شده که وقت من رو تنظیم کنن
پس دست به کار شدم و زنگ زدم
و گفتم فرصت دارین ، اگر شلوغ هستین که من بعدا زنگ بزنم
ایشون هم گفت در رابطه با چی ؟
اصن من جا خوردم ؟!
خب در رابطه با چی میخوام زنگ بزنم ؟!؟ خب کارهایی که گفتین فراموش کردم دیگه !
خلاصه تا بهش گفت من واقعا از شما ناراحت هستم که بعد سه بار تاکید لیست کارهام و تازه با اینکه اصلا موضوع هزینه نیست اما خب بعد پرداخت نقدی هزینه کارهام ،تازه امروز بعد یک ماه ! میگین اصلا کار شما چی بود ! خب آدم ناراحت میشه
آقا تا اینو گفتم
اون ور خط عصبانی شد و کلی آسمون و به زمین بافت و بافت و بافت
و دست آخر قرار شد که برام وقت بذاره و بهم زنگ بزنه
اما میدونی چی اذیتم میکنه
یکجاهایی توی صحبت هاش گفت میشه من آخر شب به شما زنگ بزنم ؟! چون شما مشخصه که اصلا موضوع تون کاری نیست ( با لحن عصبانی )
و من با تعجب گفتم ! نه ! چرا آخرشب زنگ بزنین ، من فقط بابت موضوع کارم بهتون زنگ زدم که بگم از این برخورد شما ناراحت شدم .
و دلم از این میگیره که چرا همون جا بهش نگفتم خانم محترم من اگه موضوع کاری نداشتم که به خط کاری شما زنگ نمیزدم ( خط شخصی شون رو هم خودش داده که روی اون واتس اپ داره )
تازه من اگه کارم ، کاری نبود ، که همون اولش بهتون نمیگفتم اگر وقت دارین که صحبت کنم ،
من این همه احترام میذارم به شما ، بعد چطوری ممکنه شما به من اینطوری بی احترامی کنین !
دیگه اینا رو نگفتم اما وقتی حضوری برم اونجا حتما بهش میگم .
یا شاید هم وقتی بهم زنگ بزنه که بگه چه روزی باید برم برای کارهام اونجا پشت تلفن بهش بگم
فقط اینو بگم که دستام الان سرده
سرم درد میکنه ( داره خوب میشه )
و دلم آشوبه
و همه اینا بر میگرده به اون قسمتی که به من گفت شما اصلا موضوع تماست کاری نیس!
من خیلی بهم برخورد
حس اینو داشتم که انگار منو میگه که مثل حبیب لیسانسه ها هستم !
دیگه همینا
راستی الان رسیدم به این موزیک
اینم قشنگه
https://open.spotify.com/track/3sCeMx5a87GJawMeakXkYJ?si=ee954f4c75e74b2e
اول اینکه بنظرم
یک آدم بیشعور رو به سختی میشه تحمل کرد
اما تحمل آدمی که فکر میکنه با شعوره غیر ممکنه
و اینکه به ديگران بايد فرصت بدين،
نه برای جبران،
فقط واسه اينکه خود واقعيشون رو نشون بدن و تمام .
امروز روز خیلی خیلی شلوغی بود
کاش میشد بنویسم همه شو
این متن رو توی خیلی از وبلاگ ها خوندم.
اکثرا از یک کاش میگیم که انگار دور از دسترسه
کاش میشد همه شو بنویسم و این سبکی
یک هفته است منتظر تماسش بودم
دیدم زنگ نمیزنم
خودم بهش زنگ زدم
احوال پرسی از روی رعایت پروتکل نه از روی اهمیت داشتن وضعیت احوالت رو انجام داد ( که من چقدر بدم میاد از چیزی که صرفا به خاطر رعایت یک سری پروتکل ها باشه )
بگذریم
پرسیدم که من فردا نوبت دندانپزشکی دارم ایا ؟
میگه نه ، خیلی خونسرد
میگم آخه من واقعا خیلی منتظر این زمان بودم
میگه که شلوغی دم عیده دیگه آقای فلانی ،
میگم آخه من یک ماهی میشه که منتظرم برام نوبت بذارین
میگه اصلا شما کارتون چی بود ؟
اینجا دیگه مثل اینکه آب یخی روی صورتم ریخته باشن
متاسف شدم ، که ینی انقد بی اهمیت بوده پیام هایی که توی واتس آپ دادم؟
ینی چی که چی بوده کارم :(
اینجا بود که از خودم عصبانی تر شدم ( بعد اینکه تماس رو قطع کردم ) که چرا همین جا بهش نگفتم
که خانم محترم ، من حداقل سه باری هست که براتون توضیح دادم کارم چیه
دوست داشتم که میتونستم بهش بگم ، چرا طوری برخورد میکنین که انگار صحبت های من اصلا فاقد اهمیته
آیا من رفتار مناسبی ندارم که اینطوری باعث میشه فراموش کنین من کارم چیه ؟
خیلی ازش ناراحت شدم اما خب چیزی از اینایی که اینجا نوشتم رو بهش نگفتم
در عوض بهش گفتم که من کارم اینا ست و اگه خاطرتون باشه حتی هزینه ها رو هم که پرداخت کردم
اما هنوز برای من وقت نذاشتین
هیچی دیگه قرارشد خبر بدن .
و در اوج ناراحتی بودم که اومدم بلاگ مژی و دیدم عه ! یک موزیک قشنگ گذاشته
پلی کردمش و از شدت عصبانیتم کم کم کم کم ، کم شد .
موزیکش خیلی قشنگه
اونو که پلی کردم ، در ادامه اش این موزیک اومد که خب من هم اینجا میذارمش
امیدوارم از شنیدنش لذت ببری
https://soundcloud.com/saba-khoshtaria-203367742/joe-dassin-et-si-tu-nexistais-pas-malcom-b-remix?in=user-37783137/sets/g1fgganwskgh
پی نوشت :
واقعا دلم میخواد برم توی واتس اپ و این حرفایی که بالا نوشتم رو بهش بگم و بنویسم
اما خب هنوز به اون 100 درصدی از اوج ناراحتیم نرسیدم که برم بگم
شاید نگفتم
اما تا 2 شنبه صبر میکنم
اگه برام وقت نذاشت دیگه اونجا زنگ میزنم و بهش میگم .
ابراز ناراحتی میکنم .
شدید :)
همینا دیگه